我想就MS Access中的以下问题寻求帮助。
我创建了一个表单" CustomerListF",为每个客户端填充了命令按钮。对于每个按钮,我创建了以下代码:
Private Sub cmd_outlets_ABC_Click()
DoCmd.OpenForm "OrderFormF"
Forms!OrderFormF!Outlets = "ABC"
End Sub
该按钮将打开另一个表单" OrderFormF"并输入" ABC"在名为" Outlets"的文本框中。但是,我意识到第二行代码(Forms!OrderFormF!Outlets =" ABC")总是会在我的子表单中创建一个幻像记录,该子表单位于" OrderFormF&#34 ;,这个记录将传递给其他客户'形式。通常在单击命令按钮两次(双击或后续单击)时创建此幻像记录。当记录开始转移时,这是一件令人头疼的事。
我想征求您对vba代码的建议,以编辑第二行代码。
谢谢。
答案 0 :(得分:0)
这种以开放形式填充场地的方法并不好。 OrderFormF初始化和代码的第二行(为字段赋值)可能以不同的顺序执行,它们不同步。
为了避免这种情况,您应该通过另一种方式将参数传递给OrderFormF。我建议使用OpenArgs
参数:
DoCmd.OpenForm "OrderFormF",,,,,,"ABC"
然后在OrderFormF的Load事件中将值分配给textbox:
Me.Outlets = Me.OpenArgs
在这种情况下," ABC"如果表单为空,则将值分配给表单中的第一行或新记录。在分配之前,如果需要将值分配给第一行,则可以选择该行。这种方式也可以防止双击按钮,在第一次打开表单时只执行一次加载事件