Recuerda que en las ciencias informáticas un error casi siempere puede tener diferentes resoluciones, así que nosotros te compartimos lo más óptimo y mejor.
Solución:
Esto sucede a menudo durante el desarrollo cuando el formulario ya está abierto (en modo de edición, por ejemplo) e invoca la función docmd.OpenForm. En este caso, el formulario se coloca en modo normal (vista) y se generan los eventos OnOpen y OnLoad, pero la propiedad OpenArgs se establece en null no importa lo que haya pasado a docmd.OpenForm.
La solución obviamente es cerrar el formulario antes de invocarlo con docmd.OpenForm. Sin embargo, hay una solución que me gusta usar. En el evento OnOpen compruebo si me.OpenArgs es null y si lo es, lo reemplazo con algunos valores de depuración.
if not isnull(me.OpenArgs) then
myvalue = me.OpenArgs
else
msgbox "Debug mode"
myValue = "foo"
endif
acabo de tener este problema. Él Arg
string no se aprobó porque el informe ya estaba abierto, pero no visible. Se había dejado abierto cuando el código se estrelló con el Null string error
.
La solución fue cerrar el informe en la ventana inmediata, con
Docmd.Close acReport, "myReport"
Reparó mi error y los argumentos se pasaron correctamente.
Una alternativa muy interesante a este argumento “openArgs” es usar la colección .properties del objeto currentProject.allforms(“myFormName”). Cuando necesite pasar un valor a un formulario (como un filtro heredado de otro control u otro formulario, por ejemplo), simplemente agregue la propiedad correspondiente para su formulario y agregue su valor a esta propiedad.
Ejemplo:
addPropertyToForm "formFilter","Tbl_myTable.myField LIKE 'A*'",myFormName
La función llamada intentará actualizar el valor de la propiedad “formFilter” del objeto. Si la propiedad no existe (se genera el error 2455), se agregará como una nueva propiedad en el código de gestión de errores.
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
Nos encantaría que puedieras recomendar esta sección si te fue útil.