MS Access 2007使用VBA打开单独的表单到特定记录

时间:2014-10-29 21:54:35

标签: vba ms-access access-vba ms-access-2007

我有两个表单,一个是数据输入表单,另一个是汇总表单,列出了数据库中的所有记录。在摘要表单上有一个列出所有记录的列表框。我希望用户能够从列表框中选择一条记录并使用命令按钮,打开第二个表单到特定记录。我使用特定字段完成了这项工作,在一个案例“名称”中,使用下面的代码:

DoCmd.OpenForm "frmEditAddPerson", acNormal, ,"[PersonName]='" & Me.listPeople.Value & "'"

但是当我意识到两个人可能有相同的名字时,我认为使用作为主键的PersonID并且其数据类型是“AutoNumber”是有意义的。我似乎无法让这个工作:

DoCmd.OpenForm "frmEditAddPerson", acNormal, "[PersonName] = " & SelectPersonID

注意,我通过从隐藏列中的ListBox中提取它来获取SelectedPersonID。我确认我在尝试调试时通过在MessageBox中显示AutoNumber字段的数值来更正。

对于这个方法/命令的WHERE参数,我知道你应该在引号中包含String值,没有整数,并且在SQL语句中包含带有“#”的日期。我已经尝试将SelectedPersonID作为字符串和整数进行delcaring,我仍然无法使上述工作。我甚至试过以下只是为了确定:

DoCmd.OpenForm "frmEditAddPerson", acNormal, "[PersonName] = " & CInt(SelectPersonID)

每次我收到“类型不匹配”。自动编号字段是否特殊,因为它不能用于此类内容或是否需要以特殊方式处理?

1 个答案:

答案 0 :(得分:3)

如果PersonID是自动编号主键,请在第四个OpenForm参数( WhereCondition )中引用它。您的OpenForm示例仍然包含PersonName而不是PersonID

此外,在最后两个示例中,PersonID在第三个OpenForm参数( FilterName )中被引用。

DoCmd.OpenForm "frmEditAddPerson", acNormal, , "[PersonID] = " & SelectPersonID

通过包含选项名称,可以更容易地跟踪哪个选项。

DoCmd.OpenForm FormName:="frmEditAddPerson", View:=acNormal, _
    WhereCondition:="[PersonID] = " & SelectPersonID