MS Access表单中的新记录

时间:2017-03-20 17:44:28

标签: ms-access access-vba ms-access-2010

我正在创建一个基于MS Access数据的数据库。它有一个主屏幕,我在其中输入人员ID,一旦我点击Create,它就会指向一个导航表格,其中显示4个其他表格(基本上4页数据条目为1人)。

此表单还在标题中显示person_ID和日期。当我输入人员ID并单击Create时,我应该能够输入相应记录的详细信息。但是当表单打开时,它会重定向到DB中的第一条记录,而不是该特定记录。请建议我采取正确的方法。

1 个答案:

答案 0 :(得分:1)

要在特定记录上打开表单,可以将DoCmd.OpenForm方法与WhereCondition一起使用。

在第一个表单上有person_ID的文本框。 这将在您的代码中称为me!person_ID。

DoCmd.OpenForm "Form2", acNormal, , "person_ID = " & me!person_ID

那就是它。

对于更高级的东西,您可以使用表单Form.OpenArgs属性。 除非提供OpenArgs,否则下面的代码不允许打开表单。 这可能没有必要,但它阻止用户通过我不希望他们采取的路线打开表单。

然后"创建"背后的代码按钮将类似于:

DoCmd.OpenForm "Form2",  acNormal, , , , acNormal, me!person_ID

在您希望在(Form2)上的特定记录上打开的表单上,使用以下代码:" On Open"事件:

Private Sub Form2_Open(Cancel As Integer)
    If IsNull(Me.OpenArgs) Then
        MsgBox "Open from the first form, I won't work otherwise"
        DoCmd.Close , "Form2"
        Cancel = True
        Exit Sub
    End If

    Me.Filter = "person_ID = """ & Me.OpenArgs & """"

    Me.FilterOn = True
End Sub

过滤器现在设置为第二种形式" On Open"事件而不是由第一个表单上的WhereCondition提供创建按钮" On Click"事件

作为一种设计选择,您考虑过使用单一表格并使用" Tab Control"使用选项卡代替每个表单。而不是创建按钮打开下一个表单,它只是更改选项卡。

这是我关于stackoverflow的第一篇文章,我做得好吗?