我使用 OpenArgs 参数在使用 DoCmd.OpenForm 时发送一个值:

DoCmd.OpenForm "frmSetOther", acNormal, , , acFormAdd, acDialog, "value"

然后我在打开的表单中使用 Me.OpenArgs 来获取 。它有时会发送 Null 值而不是原始字符串。怎么了?

最佳答案

这个“openArgs”参数的一个非常有趣的替代方法是使用 currentProject.allforms("myFormName") 对象的 .properties 集合。当您需要向表单传递值(例如从另一个控件或另一个表单继承的过滤器)时,只需为您的表单添加相应的属性,并将您的值添加到该属性中。

例子:

addPropertyToForm "formFilter","Tbl_myTable.myField LIKE 'A*'",myFormName

被调用的函数将尝试更新对象的“formFilter”属性的值。如果该属性不存在(引发 err 2455),它将作为新属性添加到错误管理代码中。
Function addPropertyToForm(_
    x_propertyName as string, _
    x_value As Variant, _
    x_formName As String)
As Boolean

On Error GoTo errManager
CurrentProject.AllForms(x_formName).Properties(x_propertyName).Value = x_value
addPropertyToForm = True
On Error GoTo 0

Exit Function

errManager:
If Err.Number = 2455 Then
    CurrentProject.AllForms(x_formName).Properties.Add x_propertyName, Nz(x_value)
    Resume Next
Else
    msgbox err.number & ". The property " & x_propertyName & "was not created"
End If

End Function

关于vba - OpenArgs 是 Null 问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/258556/

10-13 08:13