我最近被赋予了创建一个表单的任务,该表单将自动填充表格中的信息。使用称为 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 填充某些字段。我在一个文本框中有一个 dlookup 来查找表 P_Review 中的信息。
=DLookUp("Threshold","P_Review","ModID =" & [localModID])
因此 DlookUp 应该在 P_Review 表中找到列阈值的值,其中 P_Review 中的 ModID 等于 VBA 代码中设置的 localModID。但是,当我转到表单视图并选择 ModID 时,我收到错误 3070:Microsoft Access 数据库引擎无法识别为有效的字段名称或表达式。我确实从另一个我们已经在使用的数据库中复制了这段代码,但在这个新实例中它失败了。