Access - me.undo

 
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

me.undo

Publicado por Pablo (328 intervenciones) el 05/11/2021 19:37:43
Hola otra vez:
Acabo de preguntar qué es mejor si un formulario con subformulario o con uno vinculado, pasé a ver una prueba que estoy haciendo y me acordé de otra cosa. En el formulario tengo un botón volver con me.undo y cierre el formulario, consecuentemente se cierra el subformulario, cómo hago el undo en el subformulario?. Probe con:
Forms!muestreos_formulario!muestras_subformulario.Form.Undo
me dice que no encuentra muestras_subformulario, sin Form me dice lo mismo
El undo en el formulario también lo hace en el subformulario?
Para hacer referencia a un cuadro de texto del subformulario desde el formulario
Forms!nomform!nomsubform!CTsubform?
y desde el subformulario CT del formulario
Forms!nomform!CTform?

Son muchas preguntas!, se agradece el tiempo empleado

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

me.undo

Publicado por jose (830 intervenciones) el 05/11/2021 21:14:44
PARA REFERIRSE A UN OBJETO DEL SUBFORMULARIO DESDE EL FORMULARIO



Forms![nombre-formulario]![Subformulario-nombre].Form![campo-del-subformulario]
NOTA IMPORTANTE EL NOMBRE DEL SUBFORMULARIO ES EL DE LA CAJA CONTENEDORA DEL SUBFORMULARIO Y NO EL NOMBRE DEL FORMULARIO CONTENIDO EN ESTA

PARA REFERIRSE a un objeto del formulario , desde el subformulario o cualquier otro formulario
Forms![nombreformulario]!nombreobjeto
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

me.undo

Publicado por Anonimo (3312 intervenciones) el 05/11/2021 23:14:09
Al formulario activo y en que se ejecuta el codigo se le pude referenciar con 'ME'
(y el conoce su nombre o utilizara el 'yo' o 'mi' que corresponda)

La sintaxis ortodoxa:
Me.[nombre del objeto subforulario].Form. [nombre del objeto del subformulario].[una de sus propiedades, desde contenido al color de la tinta]

Me = Forms.[nombre del formulario]

.- Me ==> referencia relativa

.- Forms.[nombre del formulario] ==> referencia absoluta

Aplicar el 'Undo' en el subformulario debería funcionar asií

Me.[el subformulario].Form.Undo

Aclarando detalles...

Si el código se ejecuta en el subformulario 'Me' hace referencia al subformulario (es el objeto activo) ==> ME.Undo

Si el código se ejecuta en el formulario (como objeto activo) UNDO no funcionara en el subformulario porque al pasar del subformulario al formulario que lo contiene , se habrá guardado el registro (UNDO carece de sentido).

Si la propiedad del formulario 'Dirty' no esta activa UNDO puede generar un error (porque no hubo cambios que retroceder)

Undo solo afecta a los cambios que todavía no ha sido respaldados (y se respaldan al cambiar de registro, o al cambiar entre el formulario y subformulario entre otras posibilidades)

Nota: Form (sin la 's' y como parte de la referencia a un objeto del formulario es un indicador que le dice a Access que es un formulario en funciones de sub-formulario.
Si no hay conflictos de nombres (entre los diferentes objetos del formulario) sin el 'Form' puede funcionar, tomara de todo su conjunto de objetos al que indique ese nombre ... con Form se le reduce el ámbito de búsqueda (mas eficaz y rápido).
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

me.undo

Publicado por Pablo (328 intervenciones) el 07/11/2021 17:07:52
Hola Anónimo
En el botón volver del formulario tengo:
Me.Undo
Forms!muestreos_formulario!muestras_subformulario.Form.Undo
DoCmd.Close acForm, "muestreos_formulario"
Me dice que MS Access no encuentra el campo muestras_subformulario, como que es un formulario no un campo
Acabo de probar con me.nomsubform.form.undo y si funciona pero, las dos instrucciones son similares, no?, en vez de poner Forms!nomform!nomsubform funciona con me.nomsubform, lo siguiente:form.undo es igual en los dos
Pablo

PD Cuál es la caja contenedora en la que está el nombre utilizable en VBA?
Gracias
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

me.undo

Publicado por Anonimo (3312 intervenciones) el 07/11/2021 17:31:33
Lo que es similar o no lo es lo decide Access, no el programador.

Las reglas de la sintaxis las imponen los creadores de la aplicación al diseñar el motor que tiene que evaluar la sintaxis.

Si una de las definiciones funciona y la otra no .... es que no son similares (y lo dice quien tiene que ejecutar las acciones).

Con el formulario en modo diseño, seleccionar en su lista de objetos el que se supone es el subformulario y se resaltara, si con ese objeto seleccionado se accede a sus propiedades, se puede curiosear su contenido para conocer las posibilidades.
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

me.undo

Publicado por Pablo (328 intervenciones) el 07/11/2021 19:18:18
Pero son similares
Forms!nomform!cuadrodetexto
Me!cuadrodetexto
no?
Forms!nomform se sustituye por Me
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

me.undo

Publicado por Anonimo (3312 intervenciones) el 07/11/2021 21:26:54
La cuestión es que uno es absoluto:

1
Forms!nomform!cuadrodetexto
Forms >>> de la colección de formularios (lista interna)
nomform >>> Selecciona este
cuadrodetexto >>> y de el este objeto


Y el otro es relativo
1
Me!cuadrodetexto
Me >>> de MIS objetos
cuadrodetexto >>> este objeto

La referencia absoluta obtendrá la propiedad que le solicite (si el formulario esta abierto, sea o no el activo) desde cualquier parte de la aplicación.

El relativo solo funcionara 'desde si mismo y consigo mismo'

Si se le cambia el nombre al formulario, el absoluto dará error (no lo encuentra)
Aunque al formulario (o subformulario) se le cambie el nombre la referencia relativa SIEMPRE funcionara

Ojo con los parecidos:
Si maúlla como un gato y anda por los tejados como un gato ..... puede ser un gato o una gata (ambos son felinos pero no son lo mismo)

Me en el formulario es una cosa, en el subformulario es otra (que no será jamás la misma que en el formulario)

Para referirse desde el subformulario a un objeto del formulario principal la sintaxis es:
1
Me.Parent.[cuadrodetexto]

¿No has localizado nada en la ayuda de Access? ...
Es lo mas fiel que encontraras -esta escrito por sus creadores- el resto (mis comentarios incluidos) son la versión que (unida a las practicas) se obtiene como conocimiento.
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