Search code examples
vbams-accessopenformopenargs

OpenArgs is Null issue


I am using the OpenArgs parameter to send a value when using DoCmd.OpenForm:

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

I then use Me.OpenArgs inside the opened form to grab the value. It sometimes sends a Null value instead of the original string. What is wrong?


Solution

  • A very interesting alternative to this "openArgs" argument is to use the .properties collection of the currentProject.allforms("myFormName") object. When you need to pass a value to a form (such as a filter inherited from another control or another form, for example), just add the corresponding property for your form, and add your value to this property.

    Example:

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

    The called function will try to update the value of the "formFilter" property of the object. If the property does not exist (err 2455 is raised), it will be added as a new property in the error management code.

    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