我想:
要打开表单,请从控件框中选择一个项目,单击按钮以打开新表单,并能够输入将先前所选项目添加到其字段中的新记录。
到目前为止我做了什么:
我已经制作了两个表单,在两者中添加了控件,添加了一个命令按钮。 我使用MS Access向导添加此代码:
Private Sub CommandNext_Click()
On Error GoTo Err_CommandNext_Click
Dim stDocName As String
Dim stLinkCriteria As String
stDocName = "FormX"
DoCmd.OpenForm stDocName, , , "[BatchID] = " & Me![ListBatch], acFormAdd
Exit_CommandNext_Click:
Exit Sub
Err_CommandNext_Click:
MsgBox Err.Description
Resume Exit_CommandNext_Click
End Sub
第三行是我的。
结果:
在第二种形式的两种情况下, Filter 属性都会填充我使用按钮发送的参数,但这不是我的目标。
答案 0 :(得分:1)
您是否知道open form命令的第四个参数是where条件或要应用的过滤器?
如果您使用最后一个名为open arguments的参数(OpenArgs),那么您可以在第二个表单open事件中编写代码来设置相关列的默认值。
开放式表单代码如下所示:
DoCmd.OpenForm stDocName, , , , acFormAdd, , Me![ListBatch]
然后,您可以在第二个表格中打开类似以下内容的代码:
Dim defaultID as Long
defaultID = CLng(Nz(Me.OpenArgs, 0))
If defaultID = 0 Or IsNull(Me.OpenArgs) Then
Cancel = True
Exit Sub
End If
Me.TextBoxBatchID.DefaultValue = defaultID
或者如果您不需要为每个新记录设置ID,您只需将控件的当前值设置为defaultID变量。
Me.TextBoxBatchID = defaultID
请注意,如果open参数为空或0,则上述代码不会打开表单。