我在使用时使用OpenArgs
参数发送值DoCmd.OpenForm
:
DoCmd.OpenForm "frmSetOther", acNormal, , , acFormAdd, acDialog, "value"
然后我Me.OpenArgs
在打开的表单中使用以获取值.它有时会发送Null值而不是原始字符串.怎么了?
这通常发生在开发期间,表单已经被oppened(例如在编辑模式下),并且您调用了docmd.OpenForm函数.在这种情况下,表单处于正常(视图)模式,并引发OnOpen和OnLoad事件,但OpenArgs属性设置为null,而不是您传递给docmd.OpenForm的内容.
显然,在使用docmd.OpenForm调用表单之前关闭表单.但是我想使用一种解决方法.在OnOpen事件中,我检查me.OpenArgs是否为null,如果是,我将其替换为一些调试值.
if not isnull(me.OpenArgs) then myvalue = me.OpenArgs else msgbox "Debug mode" myValue = "foo" endif
我刚遇到这个问题.该Arg
字符串没有获得通过,因为该报告已经打开,但不可见.当代码崩溃时,它一直处于打开状态Null string error
.
解决方案是在即时窗口中关闭报告
Docmd.Close acReport, "myReport"
它修复了我的bug并且args正确传递了.