Ayuda DoCmd.CancelEvent

24/07/2006 - 11:50 por David C | Informe spam
Hola,

He programado esto

Private Sub retorno_no_confirmado_BeforeUpdate(Cancel As Integer)
Asignado
End Sub

y la funcion es:

Private Sub Asignado()
'MsgBox ("Entrada")
If Me.asigRetorno = False Then
Me.asigRetorno = True
'Refrescar campos asignacion.
Me.asignacion_Retorno.Requery
Else
MsgBox ("No se puede asignar mas de UN motivo de retorno!. Presione
Aceptar y la tecla Esc.")
DoCmd.CancelEvent
'DoCmd.Quit
DoCmd.Beep
'DoCmd.GoToControl Cliente
End If
End Sub

El pequeño problema es que me gustaria cancelar la edicion del registro y no
tener que hacer Esc para poder salir de esta funcion, alguien sabe como
hacerlo ?


Salu2
David C.
 

Leer las respuestas

#1 SoftJaén
24/07/2006 - 20:18 | Informe spam
"David C" escribió:

He programado esto

Private Sub retorno_no_confirmado_BeforeUpdate(Cancel As Integer)

El pequeño problema es que me gustaria cancelar la edicion del registro y
no tener que hacer Esc para poder salir de esta funcion, alguien sabe
como hacerlo ?



Hola, David:

¿Estás trabajando con una aplicación de Visual Basic clásico? Te lo pregunto
porque, aparte del objeto «DoCmd» de la biblioteca de Access y del método
«Requery» de un objeto Recordset, el evento «BeforeUpdate» me suena del
control DataGrid de Visual Basic 6.0.

Si es así, dicho evento se produce antes que los datos del objeto Recordset
subyacente, pasen al búfer de copia del propio control DataGrid. Si tu
intención es cancelar el pase de los datos al búfer, en el mismo evento
«BeforeUpdate», establece a True el valor del parámetro «Cancel», que al
estar pasado por referencia, hará que no se copien los datos.

Pero para ello, tendrás que modificar el procedimiento «Asignado» por una
función que te devuelva un valor Boolean, a la cual llamarías de la
siguiente forma:

Private Sub retorno_no_confirmado_BeforeUpdate(Cancel As Integer)
Cancel = Not Asignado
End Sub

De esta manera, si la función «Asignado» devuelve «False», la copia de datos
se cancelará. Como el propio control DataGrid generará un mensaje de error,
te vas al evento «Error» de dicho control y establece a «False» el valor del
parámetro «Response».

Y si no es todo el rollo éste que yo me he imaginado, pues indicándonos a
qué objeto pertenece el evento «BeforeUpdate» y el método «Requery».

Un saludo

Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.

Preguntas similares