Access - Codigo vba me genera errores

 
Vista:
sin imagen de perfil

Codigo vba me genera errores

Publicado por Daniela Briñez (6 intervenciones) el 03/04/2016 23:47:24
Buenas tardes

Tengo el siguiente código que he colocado en el evento "Al Salir"

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Private Sub Id_Med_Exit(Cancel As Integer)
    Dim Cancelar As Integer
    Cancelar = MsgBox("¡ATENCIÓN! MEDICAMENTO Y/O PRODUCTO NO POS, DESEA CONTINUAR?", vbOKCancel, "CONFIRMACION")
    If Tipo_Med <> 1 Then
    If Cancelar = vbOK Then
    MsgBox "HA DECIDIDO CONTINUAR"
    Else
    If Cancelar = vbCancel Then
    Id_Med.SetFocus
    Cancel = True
    Exit Sub
    End If
    End If
    End If
 
 
End Sub

Lo que pretendo es que me avise di determinado producto, corresponde a un plan específico, en este caso si es o no POS, pero me genera toda clase de errores, se activan los mensajes a todo momento, cuando se abre, cuando trato de escribir, cuando cierro.

Cual es la solución para que funcione como debe ser?

Gracias por sus aportes
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
sin imagen de perfil

Codigo vba me genera errores

Publicado por Enrique Heliodoro (1664 intervenciones) el 04/04/2016 12:56:27
Poca lógica en ese trozo de código ....

Lo razonable es que si se le indica 'que aborte la salida' (cancel = TRUE) no se le envíe el foco al mismo objeto 'que ya lo tiene' (pues precisamente ese es el objetivo de cancelar la acción de salir: NO PERDER EL FOCO).

Hacer dos comparaciones consecutivas es ... dispersar esfuerzos, ambas se pueden aunar en una con el predicado 'AND' y dado que ese valor devuelto es un 'TRUE/FALSE' se le puede asignar a la propiedad CANCEL

Resumido:

1
2
3
4
5
6
Private Sub Id_Med_Exit(Cancel As Integer)
    Dim Cancelar As Integer
    Cancelar = MsgBox("¡ATENCIÓN! MEDICAMENTO Y/O PRODUCTO NO POS, DESEA CONTINUAR?", VbOKCancel, "CONFIRMACION")
    Cancel = Me.Tipo_Med <> 1 AND  Cancelar = vbOK
    IF Not Cancel Then MsgBox "HA DECIDIDO CONTINUAR"
End Sub


.- En cancelar estaría la opción seleccionada
.- Si se cumple que el valor en 'tipo_med' es diferente de uno (TRUE) y a la vez que el usuario desea abortar (cancelar = VBOK) , en la propiedad Cancel habrá un TRUE (true + true = true)
..-Conclusion: se aborta la salida
..- Si no es un true sera un false (con NOT lo inviertimos) y se cumple la opción de no abortar, por lo que se envía el mensaje informativo
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

Codigo vba me genera errores

Publicado por Daniela Briñez (6 intervenciones) el 05/04/2016 05:03:59
Gracias por el aporte, la lógica es válida y debería funcionar, pero no entiendo porqué continúa haciendo el ciclo, cuando el mensaje es:

"ATENCIÓN! MEDICAMENTO Y/O PRODUCTO NO POS, DESEA CONTINUAR?"

Aún cuando le doy cancelar... continúa

"HA DECIDIDO CONTINUAR"

y continúa haciendo el proceso, como si le hubiese dicho que deseo continuar.

Otra cosa me dispara los Msgbox, antes de abrir el formulario y debo decirle aceptar para que habrá el formulario, no se porqué lo hace

Agradezco su colaboración
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

Codigo vba me genera errores

Publicado por Enrique Heliodoro (1664 intervenciones) el 05/04/2016 10:18:19
Añade un punto de interrupción y haz un seguimiento paso a paso para apreciar los valores que toman las diferentes variables, ajústate a su resultado (no sea que des por hecho respuestas incorrectas).
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

Codigo vba me genera errores

Publicado por walter_100 (2 intervenciones) el 06/04/2016 07:01:31
Cuando programas con access te recomiendo que trabajes con dos copias tenes el original a un 20% creado probado y testeado. En un día de trabajo avanzas 2 formularios con todo lo que esto implica. Terminas el día de trabajo a un 24% Guardas como original. y haces la copia con lo que vas a seguir mañana. Si mañana a la mitad del día falla o no hay manera simple de arreglar el error el access ya te lo guardo y te atrasa varios días de trabajo. Otra manera es tener varios proyectos separados ejemplo tengo el que captura la webcam y guarda la foto.
Tengo el que que Conecta con la base de datos y nos muestra la foto en un formulario. Después tengo el proyecto que tiene el login y la conexion y validación con la base de datos. Cuando el access en la programación sigue tirando error tenes que volver al punto en donde no existia ese objeto boton o formulario para poder saber puntualmente donde esta el error.

Espero te sirva esta forma.

Walter.
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