我最近被赋予创建一个表格的任务,该表格将自动填充表格中的信息。使用称为ModID的主键选择表单自动填充信息。我有一个组合框,其中列出了被列为“活动”的ModID。通过设置变量使用简单的VBA代码自动填充访问表格
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,其中ModID在P_Review等于localModID在VBA代码中设置。但是当我去窗体视图并选择一个ModID时,我得到错误3070:Microsoft Access数据库引擎不识别为有效的字段名称或表达式。我从我们已经使用的另一个数据库中复制了这段代码,但在这个新实例中失败了。
对不起。我忘了在我的问题中提到它,但我尝试了这一点,它会返回相同的错误消息。 – RBSt 2013-04-04 15:08:25