MS Access 表单中的新记录

问题描述 投票:0回答:2

我正在制作一个基于 MS Access 的数据输入数据库。它有一个主屏幕,我可以在其中输入人员 ID,一旦单击

Create
,它就会定向到一个导航表单,其中显示 4 个其他表单(基本上是 1 人的 4 页数据输入)。

此表单还在标题中显示 person_ID 和日期。当我输入人员 ID 并单击

Create
时,我应该能够输入相应记录的详细信息。但是,当表单打开时,它会重定向到数据库中的第一条记录,而不是该特定记录。请建议我正确的方法。

ms-access vba ms-access-2010
2个回答
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)的表单上,在“打开时”事件中使用以下代码:

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”事件中设置,而不是由第一个表单创建按钮“On Click”事件上的WhereCondition提供。

作为设计选择,您是否考虑过使用单个表单并使用带有选项卡的“选项卡控件”来代替每个表单。它不是打开下一个表单的“创建”按钮,而是简单地更改选项卡。

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


0
投票

在表单属性中,只需转到“数据”选项卡并将数据输入设置为“否”

© www.soinside.com 2019 - 2024. All rights reserved.