【发布时间】:2016-08-02 20:31:55
【问题描述】:
好的,我在 Access 中有一个数据库,当我打开一个表单(用于工作申请)并单击一个按钮时,它会运行以下代码:
Private Sub cmdAddDemo_Click()
DoCmd.OpenForm "sfrmAppDemographics", , , , , , txtApplID.Value
End Sub
其中 txtApplID 是一个文本框,其中填充了应用程序表中“应用程序 ID”号的数值。我希望将此值传递给“sfrmAppDemographics”表单,以便为应用程序前面提到的表单中显示的用户打开正确的人口统计信息。
所以,我在人口统计表格的代码中这样做了:
Private Sub Form_Open(Cancel As Integer)
Dim rs As DAO.Recordset
Set rs = Me.Recordset
If rs.RecordCount = 0 Then
rs.AddNew
rs!ApplID = Me.OpenArgs
rs.Update
Else
MsgBox Me.OpenArgs
End If
Me.Requery
结束子
所以,这个想法是,如果没有人口统计信息,它将使用传递的 openargs 中的 ApplID 创建一个新的,如果有此用户的人口统计数据,它会弹出一个带有 openargs 的消息框(如测试看看它是否工作)。我总是在 MsgBox 的行上收到错误“运行时错误'94':无效使用 Null”。 (因为数据库确实有人口统计记录)。当我取出 Else MsgBox Me.OpenArgs 时,它只显示数据库中的第一个人口统计信息,ApplID 为 1。奇怪。看来我无法通过 Form_Open 代码中的 OpenArgs 功能传递或访问 ApplID。有什么帮助吗?
【问题讨论】:
-
这对我来说没有意义。您正在尝试根据表单的记录集设置记录集?它甚至可能还没有加载——除非记录集中没有数据,否则你不会为 OpenArgs 设置陷阱——它甚至没有检查 AppID。在代码顶部放置一个
Debug.Print Me.OpenArgs,它应该证明它正在传递给 Form_Open 事件
标签: database vba ms-access openargs