valor sino sale quitar porque poner errores error encuentra div como buscarv ms-access access-vba openform openargs

ms-access - sino - errores de excel en formulas



OpenArgs es un error nulo (7)

Puede ser que ya tengas tu formulario abierto (como se sugiere), pero solo busca nulo y el formulario manejará también la apertura con argumentos perdidos.

Esto permitirá abrir el formulario para un vistazo rápido (por usted o los usuarios) si los argumentos no son vitales.

Private Sub Form_Open(Cancel As Integer) If Not IsNull(Me.OpenArgs) Then Me.lblHeading.Caption = Me.OpenArgs End If End Sub

Se puede pasar un valor nulo a OpenArgs omitiendo el valor en la llamada OpenForm, o haciendo doble clic en el formulario en la barra lateral de Access Objects.

Si se trata de un formulario modal , debe verificar explícitamente si está abierto y cerrarlo antes de abrirlo, de ser así. Este es un gotcha común.

Por supuesto, lo mismo podría hacerse para todas las formas, no solo para las modales, y entonces no necesitaría la verificación nula (siempre que nunca le pase nulo). Pero a menudo hay muchas formas en un proyecto, e incluso más llamadas OpenForm que formularios ...

Estoy usando el parámetro OpenArgs para enviar un valor al usar DoCmd.OpenForm :

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

Luego uso Me.OpenArgs dentro del formulario abierto para tomar el valor . A veces envía un valor nulo en lugar de la cadena original. ¿Qué está mal?


¿El valor tomado de un usuario fue el control completado? ¿Se asegura de que el foco se mueva desde el control antes de ejecutar la línea de forma abierta?

EDITAR: La propiedad de valor del control será igual al valor anterior, que puede ser nulo, a menos que haga esto.


Creo que encontré la respuesta a mi problema:

En mi experiencia, OpenArgs debe manejarse inmediatamente después de abrir el formulario. (enlazar)

Lo comprobé deteniéndome antes de intentar usar el valor OpenArgs, y era nulo. Pero cuando elimino el corte, el programa no muestra ningún error. Esto solo debe suceder durante el desarrollo.


Esto sucede a menudo durante el desarrollo cuando el formulario ya está activado (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, independientemente de lo que haya pasado a docmd.OpenForm.

La solución es obviamente cerrar el formulario antes de invocarlo con docmd.OpenForm. Sin embargo, hay una solución alternativa que me gusta usar. En el evento OnOpen, compruebo si me.OpenArgs es nulo y, si lo está, lo reemplazo con algunos valores de depuración.

if not isnull(me.OpenArgs) then myvalue = me.OpenArgs else msgbox "Debug mode" myValue = "foo" endif


Una alternativa muy interesante a este argumento de "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 incrementa el error 2455), se agregará como una nueva propiedad en el código de administració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



acabo de tener este problema. La cadena Arg no se aprobó, porque el informe ya estaba abierto, pero no visible. Se dejó abierto cuando el código se bloqueó con el Null string error .

La solución fue cerrar el informe en la ventana inmediata, con

Docmd.Close acReport, "myReport"

Solucionó mi error y los argumentos se pasaron correctamente.