Access - Saber de que formulario vengo

 
Vista:
sin imagen de perfil
Val: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Saber de que formulario vengo

Publicado por Pablo (328 intervenciones) el 15/07/2021 18:36:36
Hola a todos
Tengo un formulario de búsqueda que lo puedo llamar desde distintos formularios, este formulario me presenta los datos en lo que hay alguna coincidencia, quiero que al hacer doble clic en el registro buscado me pase unos datos al formulario del que vengo y cierre el de búsqueda. El formulario de búsqueda se abre desde distintos formularios=>hace falta saber de qué formulario vengo para saber a donde pasar los datos.
Buscando en la ayuda encontré: acsyscmdgetobjectstate,acform,nomform. Tendría que revisar el estado de cada uno de los 3 formularios que llaman al de búsqueda y pasar los datos al que esté abierto, es esto correcto?

Gracias de antemano
Pablo

Acabo de hacer unas pruebas, en un formulario1 puse un cuadro de texto y al hacer doble clic:
me.texto=syscmd(acsyscmdgetobjectstate,acform,"formulario1"), responde con un 3
En la ayuda veo que esta función puede tener 3 valores: 1 abierto, 2 dirty y 4 new, no dice nada de 3 pero, es lo que responde. Alguna explicación?
Gracias
Pablo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Saber de que formulario vengo

Publicado por Anonimo (3316 intervenciones) el 16/07/2021 15:10:54
A los formularios se les distingue con su nombre (que ha de ser único en el conjunto de formularios) y el estado en que esta (si se utiliza para llamar al de búsqueda), lo normal es que este abierto si expresamente no se ha cerrado (algo poco corriente si se desea interactuar con el).

Hay un parámetro para llamar a los formularios e informes que nos permite añadir un dato que se recupera en el destino: OpenArgs

De la ayuda de Access sobre la apertura de formularios desde VBA:
expresión.OpenForm(FormName, View, FilterName, WhereCondition, DataMode, WindowMode, OpenArgs)

Como argumento para ese dato, se utilizaria el nombre del formulario que llama : Me.Name y en el destino (el formulario de búsquedas) se recupera así:

xxxx = Me.OpenArgs

Un ejemplo de uso, se utilizan dos variables publicas (DatoN para el dato localizado, XForm para el dato en OpenArgs), pues al cerrar el formulario se pierden las que en el se declaran, en una se guarda el dato (un numero), en la otra el formulario al que se desea regresar (que es del que proviene) y esta en OpenArgs.

Un ejemplo de uso:

1
2
3
4
5
6
7
8
9
10
11
Private Sub Ficha_Click()
'se guarda el dato y se finaliza la busqueda
DatoN = Me.FICHA
Xform = Me.OpenArgs
DoCmd.Close acForm, Me.Name
End Sub
 
Private Sub Form_Unload(Cancel As Integer)
'para esto se guarda el dato en Xform, en este evento la variable OpenArgs ya no existe
DoCmd.SelectObject acForm, Xform
End Sub

Tener unas variables publicas para usos diversos (o especificos) si se utilizan bien dan mucha libertad creativa.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Saber de que formulario vengo

Publicado por Pablo (328 intervenciones) el 16/07/2021 17:47:55
Hola Anónimo:
Ayer pensando se me ocurrio utilizar openargs cuando hago docmdopenform.....,me.name, hice una prueba y funcionó bien, me alegro de que sea la idea que propones.
Ahora me gustaría rizar el rizo, se podría hacer también con:acsyscmdgetobjectstate,acform,nomform?. Es más eficiente con openargs pero..., ya que descubrí una nueva instrucción me gustaría saber aplicarla.

Gracias y un saludo
Pablo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Saber de que formulario vengo

Publicado por Anonimo (3316 intervenciones) el 16/07/2021 19:54:29
Mas opciones?,
Es muy probable que alguien pueda haber implementado alternativas (simplemente guardando en una variable publica ese dato ya se logra), pero creo que esa instrucción solo devuelve el estado del formulario (supongo que Abierto/en edición/cerrado).

No le veo utilidad en este caso, la tendría si se necesitase para una supuesta modificación en tiempo de ejecución o situación similar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 266
Bronce
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Saber de que formulario vengo

Publicado por Pablo (328 intervenciones) el 16/07/2021 20:31:29
Vale Anónimo era simple curiosidad de saber como funcionaba.
Gracias
Pablo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Saber de que formulario vengo

Publicado por Norberto (80 intervenciones) el 19/07/2021 12:43:10
Hola:

Independientemente de que el estado del formulario no te sierve para averiguar de cúal vienes, te diré que el valor devuelto no es 1, 2 o 4 sino cualquier combinación de ellos. Así pues, 3 es 1 + 2; es decir, [Abierto] y [Diseño modificado y no guardado].

Un saludo,

Norberto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar