我正在创建一个基于MS Access数据的数据库。它有一个主屏幕,我在其中输入人员ID,一旦我点击Create
,它就会指向一个导航表格,其中显示4个其他表格(基本上4页数据条目为1人)。
此表单还在标题中显示person_ID和日期。当我输入人员ID并单击Create
时,我应该能够输入相应记录的详细信息。但是当表单打开时,它会重定向到DB中的第一条记录,而不是该特定记录。请建议我采取正确的方法。
答案 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的第一篇文章,我做得好吗?