** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Detener codigo del todo
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoDetener codigo del todo

 Responder Responder
Autor
Mensaje
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 3062
Enlace directo a este mensaje Tema: Detener codigo del todo
    Enviado: 26/Octubre/2021 a las 16:32
Buenas. Tengo este pequeño sub. La idea es llamarlo desde un boton y si se cumple una condicion de ese Sub se detenga el codigo del todo.

Con el exit sub detiene el codigo del Sub, pero no de otros Subque van debajo de ese Sub.

Como puedo hacer para que si una condicion del Sub se cumple, se pare el codigo del todo??

En el boton hay esto, dos Sub uno encima de otro, si se cumple una condicion de VerificacionesPreCobro se debe detener el codigo del todo y no ejecutar el segundo Sub  Cobrar

VerificacionesPreCobro

Cobrar

He probado en vez de exit sub con End, pero me vacia variables  y no me vale, con Stop, pero no funciona.
La idea es no tener que repetir codigo en x botones, de hay lo de crear  VerificacionesPreCobro asi no tengo que poner todo el codigo repetido..

A ver si seos ocurre algo....



Sub VerificacionesPreCobro() 

'Tema caja*********
If EstadoCaja = False Then
MsgBox "Caja cerrada, abra la caja para efectuar ventas.", vbCritical, "Caja cerrada"
Exit Sub
End If
'****************

If Me.Pagado = True Then
MsgBox "El ticket esta pagado, si has modificado algo del ticket utiliza el boton cobrar.", vbInformation
Exit Sub
End If


If IsNull(Forms!frmTPV!NumeroTicket) Then
MsgBox "Selecciona un ticket o cree uno nuevo.", vbExclamation, "Atención"
Exit Sub
Exit Sub
End If


End Sub


Editado por rokoko - 26/Octubre/2021 a las 16:34
Arriba
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 3062
Enlace directo a este mensaje Enviado: 26/Octubre/2021 a las 17:00
Pues siguiendo buscando info este hilo de un foro me a dado la idea...

https://microsoft.public.es.access.narkive.com/ywsNW7b3/detener-ejecucion-de-codigo

Funciona bien la verdad, no se si se os ocurre otra forma mas profesional de hacerlo......

Sub VerificacionesPreCobro()  
'Dim varVerificacionesPreCobro As Integer  'Va como variable global arriba para todo el formulario!!!!!
varVerificacionesPreCobro = 1

'Tema caja*********
If EstadoCaja = False Then
MsgBox "Caja cerrada, abra la caja para efectuar ventas.", vbCritical, "Caja cerrada"
varVerificacionesPreCobro = 0
Exit Sub
End If
'****************

If Me.Pagado = True Then
MsgBox "El ticket esta pagado, si has modificado algo del ticket utiliza el boton cobrar.", vbInformation
varVerificacionesPreCobro = 0
Exit Sub
End If


If IsNull(Forms!frmTPV!NumeroTicket) Then
MsgBox "Selecciona un ticket o cree uno nuevo.", vbExclamation, "Atención"
varVerificacionesPreCobro = 0
Exit Sub
End If

End Sub


Y en los botones

'Llamo a sub
VerificacionesPreCobro

'Con este truco consigo que si en Sub VerificacionesPreCobro alguna sale 0 detenga codigo del todo
If varVerificacionesPreCobro = 0 Then
Exit Sub
End If

'Llamo a sub
Cobrar

Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: en línea
Puntos: 14017
Enlace directo a este mensaje Enviado: 26/Octubre/2021 a las 17:31
Yo me creo una función que me devuelve un True si todo es correcto o un False si hay un error.

Function ComprobarErrores() As Boolean
    If LoQueSea Then
         Mensaje error
         Exit Function
    End If
    .
    .
    ' si todas las comprobaciones son correctas
    ComprobarErrores = True
Exit Function


Y para llamarla:
    If ComprobarErrores then
          ' todo correcto
    Else
          ' por aquí si hay error
    End If
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 3062
Enlace directo a este mensaje Enviado: 26/Octubre/2021 a las 19:28
Gracias. Lo pruebo dentro de unos dias, que me voy fuera....

Saludos
Arriba
xavi Ver desplegable
Administrador
Administrador
Avatar
Terrassa-BCN

Unido: 10/Mayo/2005
Localización: Catalunya ||||
Estado: en línea
Puntos: 14734
Enlace directo a este mensaje Enviado: 26/Octubre/2021 a las 19:44
Para detener la ejecución del código creo que basta con un simple End



Editado por xavi - 26/Octubre/2021 a las 19:45
Xavi, un minyó de Terrassa

Mi web
Arriba
rokoko Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 16/Febrero/2008
Localización: Pamplona
Estado: Sin conexión
Puntos: 3062
Enlace directo a este mensaje Enviado: 02/Noviembre/2021 a las 22:37
Buenas. Con el metodo de Mihura me ha ido bien.
Lo de End ya lo habia probado Xabi y detiene el codigo efectivamente, pero tambien me vacia alguna variable publica y me surgia algun error por eso.

Saludos y gracias

Se puede cerrar
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable