0

現在、2 つのサブフォームを含むフォームがあります。Customer Addresses という名前の 1 つのサブフォームには、住所テーブルの主キーを含むテキスト ボックスがあります。このフォームにボタンを配置して、次または前のレコードに切り替えます。これらのレコードを循環すると、テキスト ボックスで異なる住所 ID が循環しているのがわかります。

addressID が循環しているときに、その値が CustomerContacts という別のサブフォームの別のテキスト ボックスを自動的に更新するようにします。変更イベントと更新イベントにコードを追加しましたが、成功しませんでした。

Private Sub Text0_Change()
        Me.Parent!ContactInformation.Form!ContactInformation_Address.Value = Text0.Value

End Sub

上記のコードの参照は正しいです。このコードをコンボボックスでテストし、実際にドロップダウン矢印を押して値を選択すると、他のサブフォームの他のテキスト ボックスが正常に更新されました。

したがって、ここで欠けているものがあります。レコードを循環すると、変更または更新イベントがトリガーされないため、これらすべてを回避するにはどうすればよいか疑問に思っています。

4

1 に答える 1

0

Forms マクロを Visual Basic に変換しました。これで、次のレコードと前のレコードを選択していたコマンド ボタンが vba コードになりました。次に、更新するテキスト ボックスのコードを取得し、レコードを選択する行の下に配置します。

'------------------------------------------------------------
' Command24_Click
'
'------------------------------------------------------------
Private Sub Command24_Click()
On Error GoTo Command24_Click_Err

    On Error Resume Next
    DoCmd.GoToRecord , "", acPrevious
    Me.Parent!ContactInformation.Form!ContactInformation_Address.Value = Text0.Value
    If (MacroError <> 0) Then
        Beep
        MsgBox MacroError.Description, vbOKOnly, ""
    End If


Command24_Click_Exit:
    Exit Sub

Command24_Click_Err:
    MsgBox Error$
    Resume Command24_Click_Exit

End Sub


'------------------------------------------------------------
' Command25_Click
'
'------------------------------------------------------------
Private Sub Command25_Click()
On Error GoTo Command25_Click_Err

    ' _AXL:<?xml version="1.0" encoding="UTF-16" standalone="no"?>
    ' <UserInterfaceMacro For="Command24" xmlns="http://schemas.microsoft.com/office/accessservices/2009/11/application"><Statements><Action Name="OnError"/><Action Name="GoToRecord"><Argument Name
    ' _AXL:="Record">Previous</Argument></Action><ConditionalBlock><If><Condition>[MacroError]&lt;&gt;0</Condition><Statements><Action Name="MessageBox"><Argument Name="Message">=[MacroError].[Description]</Argument></Action></Statements></If></ConditionalBlo
    ' _AXL:ck></Statements></UserInterfaceMacro>
    On Error Resume Next
    DoCmd.GoToRecord , "", acNext
    Me.Parent!ContactInformation.Form!ContactInformation_Address.Value = Text0.Value
    If (MacroError <> 0) Then
        Beep
        MsgBox MacroError.Description, vbOKOnly, ""
    End If


Command25_Click_Exit:
    Exit Sub

Command25_Click_Err:
    MsgBox Error$
    Resume Command25_Click_Exit

End Sub
于 2017-01-03T15:53:56.550 に答える