Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

evento "antes de cambiar de registro"

407 views
Skip to first unread message

alf

unread,
Dec 18, 2003, 4:40:52 PM12/18/03
to
Hola:
tengo un formulario con un subformulario donde edito y agrego registros,
estos registros del subformulario tienen que cumplir una condicion entre
todos ellos. No se debe salir del registro del form principal si los
registros del subformulario no cumplen la condicion dada.
La cosa que quiero lograr es no dejar cambiar de registro en el form
principal ni dejar cerrarlo si los registros del subform no cumplen la
condicion. Para esto tengo que encontrar un evento en el form principal que
se genere antes de cambiar de registro y antes de cerrar el form.
Lo que he encontrado es el evento al cerrar del form principal y el evento
al salir del control subformulario, pero aqui no resuelvo realmente, si
chequeo el evento al salir del subform se me genera el evento incluso cuando
estoy en el mismo registro del form y aqui todavia no debo generar ninguna
alerta. El evento OnCurrent del form tampoco me sirve porque se genera
despues de haber salido del registro anterior y yo quiero quedarme en el, o
sea, no dejar que se salga hasta que se verifiquen las condiciones en el
subform.
se entiende ????
el subform es formulario continuo.
saludos y gracias


McPegasus

unread,
Dec 19, 2003, 3:34:40 AM12/19/03
to
Perfectamente Alf se entiende,

la forma es crear un procedimiento común a nivel de formulario y cuando
hagas modificaciones en cada uno de los controles que sean sensibles a
modificación, mandarlo a ese procedimiento.

Al actualizar Control1
call ProcedimientoComún

Al actualizar Control2
call ProcedimientoComún

Sí se que hay que usar un poco de código y tener en cuenta todas las
posibilidades, pero no hay ningún evento que conozca para tú necesidad, eso
o hacerte un navegador de botones donde puedes captuar los movimientos de
los registros.


--

Filosofía compartida: "regalamos conocimientos, no tiempo."...

Un Saludo,

Rafael Andrada C.
McPegasus
Valencia (es)

[MS MVP - Access]
mcpe...@XquitarXmcpegasus.net
www.mcpegasus.net

"alf" <alf...@NOSPAMcubaautrement.com> escribió en el mensaje
news:%23bV2Q%23axDH...@tk2msftngp13.phx.gbl...

CRACKER2000

unread,
Dec 19, 2003, 4:00:10 AM12/19/03
to
Hola Alf, precisamente yo hice esto no hace mucho en una aplicación y lo
hice de la siguiente manera:

Tengo un form y un subform, en el subform incluí una variable pública, para
hacerlo abre el subform directamente, sin el form y debes poner al principio
del código del subform esto:

Option Compare Database
Public correcto As Boolean ' correcto es la variable pública que
utilizaré para pasarle valores true o false

Ahora en el evento después de actualizar del subform o en los controles que
te interese, deberás incluir código para que si se cumple la condición que
quieres se pase el valor false a la variable pública y si no que pase true
por ejemplo.
De esta manera puedes controlar en el evento al salir del form , en los
botones de exploración de registros ó en general en todo aquello que suponga
la salida del formulario o el abandonar el registro actual, para lograr esto
sería así:

if correcto = true then
' lo que quieres que haga...mostrar un mensaje para que el usuario sepa que
el registro no esta acabado o lo que sea.
else
' como es correcto cierro el formulario o paso a otro registro
end if

Espero haberte ayudado... Felices fiestas a todos.


"alf" <alf...@NOSPAMcubaautrement.com> escribió en el mensaje
news:%23bV2Q%23axDH...@tk2msftngp13.phx.gbl...

Pedro

unread,
Dec 19, 2003, 9:15:41 AM12/19/03
to
Hola.
No se si pecare de ser un poco simplista, pero se me ocurre... Lo has
probado a hacer con las reglas de validacion de los campos??
Quiza podrias crear un campo cuyo valor (por origen del control) sea
la condicion que quieres poner al registro y ahi poner la regla de
validacion.

Un saludo,

Pedro P.P.


"alf" <alf...@NOSPAMcubaautrement.com> wrote in message news:<#bV2Q#axDHA...@tk2msftngp13.phx.gbl>...

alf

unread,
Dec 19, 2003, 10:17:35 AM12/19/03
to
Hola Pedro, la condicion que quiero chequear no es tan simple, primero no
depende de un solo registro, sino de todos los registros de ese subform que
esten rerlacionados con el registro activo del form, es una especie de
calculo con todos los registros para compararlos con un valor que debe estar
en el form principal, imaginate como una distribucion de valores en los
registros, para hacerlo sencillo de entender. Asi que por reglas de
validacion no me funciona, es mejor chequear en codigo..
saludos, alf.

"Pedro" <ppo...@terra.es> wrote in message
news:4c3dc172.03121...@posting.google.com...

alf

unread,
Dec 19, 2003, 10:33:29 AM12/19/03
to
Hola cracker,
esto ya lo habia pensado, con el evento AfterUpdate del subform es donde
chequeo la condicion y marco si se cumple o no, hasta aqui todo bien, el
problema esta cuando cambio de registro en el form principal, en este
momento no tengo como chequear por si se cumple la condicion antes de salir
del registro activo, solo si uso un boton de navegacion propio... de esto
habla la solucion de buho que ahora voy a comentarla bajo su respuesta...
saludos, alf.

"CRACKER2000" <cracker2000ARROBAinterlap.com.ar> wrote in message
news:ey$fA5gxD...@TK2MSFTNGP09.phx.gbl...

alf

unread,
Dec 19, 2003, 10:34:12 AM12/19/03
to
Hola cracker,
esto ya lo habia pensado, con el evento AfterUpdate del subform es donde
chequeo la condicion y marco si se cumple o no, hasta aqui todo bien, el
problema esta cuando cambio de registro en el form principal, en este
momento no tengo como chequear por si se cumple la condicion antes de salir
del registro activo, solo si uso un boton de navegacion propio... de esto
habla la solucion de buho que ahora voy a comentarla bajo su respuesta...

DISCULPA, LA OTRA SOLUCION NO ES DE BUHO, ES DE MCPEGASUS !!!

saludos, alf.

"CRACKER2000" <cracker2000ARROBAinterlap.com.ar> wrote in message
news:ey$fA5gxD...@TK2MSFTNGP09.phx.gbl...

Yala

unread,
Dec 19, 2003, 10:57:24 AM12/19/03
to
Se me ocurre algo, no se si te vale:

La condición que deben cumplir los registros del subformulario no podrías
chequearla en el evento de salir del subformulario?
Si no cumplen la condición, podrías hacer que el foco volviera al
subformulario(con un gotocontrol) y no te dejase hacer otra cosa hasta que
se cumpla, así ni podrás cambiar de registro el principal ni cerrarlo, si no
me equivoco.

No se si me explico, pero tengo algo parecido en un formulario y funciona.

Saludos,

Yala


alf

unread,
Dec 19, 2003, 11:01:23 AM12/19/03
to
Ante todo disculpas porque estoy teniendo problemas con la coneccion y
quizas algunos mensajes se hayan posteado repetidos......


"McPegasus" <mcpe...@XQUITARXmcpegasus.net> wrote in message
news:OIjiOugx...@TK2MSFTNGP09.phx.gbl...

alf

unread,
Dec 19, 2003, 11:08:58 AM12/19/03
to
Hola McPegasus,
parece ser que la unica via para tener control de la condicion en todo
momento es crear botones propios de navegacion...
he probado y probado con los eventos del control subform, y los del form
pero siempre queda un huequito sin resolver, asi que tendre que obligar a
usar mis botones para cambiar de registro y chequear en ellos la
condicion.... aunque esta solucion no es la que mas me gustaria...
deberia existir un vento BeforeCurrent o algo asi....
saludos y gracias... alf.

"McPegasus" <mcpe...@XQUITARXmcpegasus.net> wrote in message
news:OIjiOugx...@TK2MSFTNGP09.phx.gbl...

alf

unread,
Dec 19, 2003, 11:11:17 AM12/19/03
to
Hola Yala,
resulta que si debo dejar que se paren en el form, porque la condicion del
subform depende de valores en el form y se puede querer editar estos valores
y no los del subform para que la condicion se de...asi que tengo que dejar
salir del subformulario al formulario principal, pero no puedo dejar salir
del registro activo del form, y aqui sigue la bola.....

gracias, alf.

"Yala" <lgu...@iespana.es> wrote in message
news:brv755$bjd$1...@nsnmrro2-gest.nuria.telefonica-data.net...

Yala

unread,
Dec 19, 2003, 11:31:16 AM12/19/03
to
El código que yo he puesto es algo así (te lo pongo por si te ayuda):

Private Sub subformulario_Exit(Cancel As Integer)

If condicion = "no" Then
MsgBox "No ta bien"
DoCmd.GoToControl "subformulario"
End If

End Sub

en la condición, por supuesto, tendrás que chequear todas tus condiciones.
A mi me funciona, y no me deja cambiar de registro ni moverme del
subformulario.

Un saludo,

Yala


Yala

unread,
Dec 19, 2003, 11:33:11 AM12/19/03
to
Lo siento, alf, no leí tu último mensaje.
Efectivamente, con lo que me dices no te sirve mi sistema.
Si se me ocurre algo te lo diré

Besitos


alf

unread,
Dec 19, 2003, 11:41:44 AM12/19/03
to
Yo usaria algo mejor, en ese mismo evento:

Private Sub subformulario_Exit(Cancel As Integer)

If condicion = "no" Then
MsgBox "No ta bien"

Cancel = 1
Else
Cancel=0
End If

End Sub

asi se queda donde esta, se aborta en evento, y no hay que usar el
docmd.....

saludos y gracias por todo, alf.

"Yala" <lgu...@iespana.es> wrote in message

news:brv94i$k5b$1...@nsnmrro2-gest.nuria.telefonica-data.net...

Pedro

unread,
Dec 21, 2003, 10:02:48 AM12/21/03
to
Hola Alf.
Lo cierto es que en "codigo" no soy nada bueno (al contrario soy peor
:P), pero con macros y el generador de expresiones de momento he
conseguido casi todo lo que me he propuesto.
El otro dia, depurando una aplicacion, vi una opcion que no se si te
servira.
Resulta que en el generador de expresion SI que existe el evento
"DespuesDeActualizar".
No se si haciendo una macro, entre las condiciones de macro y la
accion "Establecer valor", poniendo como elemento
[formularios]![tusubformulario].[DespuesDeActualizar] y evaluando en
la expresion la condicion que debe cumplir te serviria para lo que
pretendes hacer.
De todas formas si no has encontrado una solucion ya, no pierdes nada
por intentarlo.

Un saludo.

Pedro P.P.

"alf" <alf...@NOSPAMcubaautrement.com> wrote in message news:<eOMDwMkx...@tk2msftngp13.phx.gbl>...

0 new messages