0

私は最近、テーブルからの情報を自動入力するフォームを作成するタスクを与えられました。フォームが自動入力する情報は、ModID と呼ばれる主キーを使用して選択されます。アクティブとしてリストされている ModID のリストを含むコンボ ボックスがあります。

SELECT ModID
FROM P_Review
WHERE Status = "Active"

十分に単純です。次に、更新後のイベントで VBA コードを実行します。したがって、コンボ ボックスの値を選択または変更すると、この VBA コードが実行されます。

Option Compare Database
Option Explicit

Private Sub selectModID_AfterUpdate()
    'Find the record that matches the control.
On Error GoTo ProcError
    Dim rs As Object
    Set rs = Me.RecordsetClone
    With rs
            .FindFirst "ModID=" & Me.selectModID
            If Not .NoMatch Then
                Me.Bookmark = .Bookmark
            Else
    DoCmd.RunCommand acCmdRecordsGoToNew
    Me!localModID = Me.selectModID.Column(0)

            End If
    End With

ExitProc:
    Exit Sub
ProcError:
    MsgBox "Error: " & Err.Number & ". " & Err.Description
    Resume ExitProc

End Sub

コードは正常に実行されます (デバッグまたは実行時にエラーは発生しません)。

次に、アクセス テキスト ボックスについて説明します。変数 localModID に基づいて特定のフィールドに入力したいと思います。テーブル P_Review 内の情報を見つけるために、テキスト ボックスに dlookup があります。

=DLookUp("Threshold","P_Review","ModID =" & [localModID])

したがって、DlookUp はテーブル P_Review で列のしきい値の値を見つける必要があります。ここで、P_Review の ModID は VBA コードで設定された localModID と等しくなります。しかし、フォーム ビューに移動して ModID を選択すると、エラー 3070 が表示されます。Microsoft Access データベース エンジンは、有効なフィールド名または式として認識しません。既に使用している別のデータベースからこのコードをコピーしましたが、この新しいインスタンスでは失敗します。

4

2 に答える 2