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

Tema cerradoControlar errores en Expresiones

 Responder Responder
Autor
Mensaje Invertir el orden de clasificación
Erick Gamer Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 08/Mayo/2016
Localización: Mexico
Estado: Sin conexión
Puntos: 271
Enlace directo a este mensaje Tema: Controlar errores en Expresiones
    Enviado: 02/Diciembre/2019 a las 22:49
Pueden cerrar este hilo por favor!!!!

Erick Gamer
Aprendiz de todos, maestro de nadie.
Arriba
Erick Gamer Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 08/Mayo/2016
Localización: Mexico
Estado: Sin conexión
Puntos: 271
Enlace directo a este mensaje Enviado: 29/Noviembre/2019 a las 07:12
Gracias por contestar, creo que con las aportaciones realizadas podre mejorar el control de errores en mis aplicaciones, voy a estar probando en caso de alguna otra pregunta abro otro hilo.

Muchas Gracias

Erick Gamer
Aprendiz de todos, maestro de nadie.
Arriba
deneg_nhj Ver desplegable
Habitual
Habitual
Avatar

Unido: 03/Septiembre/2012
Localización: Mexico
Estado: Sin conexión
Puntos: 106
Enlace directo a este mensaje Enviado: 26/Noviembre/2019 a las 00:59
Erick

"Yo", no suelo utilizar consultas guardadas. Todo lo hago con consultas dentro del código de VBA.

1. Numerar las lineas, es ponerles un numero antes de cada instrucción "Hay algunas excepciones"

2. Si utilizas consultas ya guardadas, mi enfoque te permite saber en que consulta falla.
3. No podrás depurar la consulta, pero tendrás una idea de donde falla

Saludos!
deneg

Especializado en Microsoft Access, SQL SERVER y Excel
Arriba
pitxiku Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 27/Septiembre/2017
Localización: En mi casa
Estado: Sin conexión
Puntos: 1118
Enlace directo a este mensaje Enviado: 25/Noviembre/2019 a las 13:04
Si numeras las líneas, puedes usar la función Erl para saber en qué línea se produjo él error.

Más opciones:

- Usar siempre Option Explicit. Para bases de datos heredadas, revisar todos los módulos y agregar la línea donde falte.

- Cuando el código sea muy largo, recortarlo en funciones más pequeñas, para que sea más legible cuando los tengas que revisar dentro de un tiempo.

- Con expresiones muy largas, usar varios líneas e intercalar llamadas a Debug.Print para ver cómo se está creando. Luego se pueden borrar/comentar esos Debug.
Arriba
Erick Gamer Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 08/Mayo/2016
Localización: Mexico
Estado: Sin conexión
Puntos: 271
Enlace directo a este mensaje Enviado: 25/Noviembre/2019 a las 00:17
Hola gracias por contestar deneg_nhj
1)
A qué te refieres con numerar las líneas de código?
2)
Lo que comentas es usar código puro sql en las consultas?

Para ejecutar ciertas acciones o procesos largos que requieren de muchas consultas, estás las meto en un módulo estándar y vb las va ejecutando una a una. Las consultas las tengo grabadas y con un nombre en base al proceso que ejecutan secuencial mente.

Algo así:
Import_0001
Import_0003

Entonces usando tu método estás consultas estarían dentro de vba con código puro sql.

Si es correcta mi asumpsion hay alguna forma de hacerlo con mis consultas ya definidas?

Gracias de antemano Erick Gamer

Editado por Erick Gamer - 25/Noviembre/2019 a las 00:19
Aprendiz de todos, maestro de nadie.
Arriba
deneg_nhj Ver desplegable
Habitual
Habitual
Avatar

Unido: 03/Septiembre/2012
Localización: Mexico
Estado: Sin conexión
Puntos: 106
Enlace directo a este mensaje Enviado: 23/Noviembre/2019 a las 05:04


Una manera de depurar es la siguiente:

1. Numerar las lineas de código
2. Los SQL ejecutarlos mediante una variable por ejemplo

var_sSQL = "Update xtable SET xx..... "
Currentdb.Execute   var_sSQL



3. En el controlador de Errores "supongo que lo tienes"


CtrlErr:

 MsgBox " El error fue : " & Err.Description & _
   "El SQL que falló es: " & var_sSQL & _
  "En la línea: " & erl, ...... <= Lo que lleva el msgbox



He escrito el codigo de memoria, pero esa es la manera de como yo trato de controlar que falla.







Especializado en Microsoft Access, SQL SERVER y Excel
Arriba
Erick Gamer Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 08/Mayo/2016
Localización: Mexico
Estado: Sin conexión
Puntos: 271
Enlace directo a este mensaje Enviado: 23/Noviembre/2019 a las 04:05
Esta pregunta la hice con otro hilo, por ello abro un hilo nuevo para esta pregunta exclusivamente.

Manejo muchas expresiones en consultas, cálculos, concatenaciones, IIF anidados etc, muchas de esas expresiones ya estaban hechas en la base de datos que me han proporcionado, en algunas ocasiones me he topado con errores en esas consultas divisiones entre ceros, IIF con campos vacíos, funciones anidadas etc.

Entonces para encontrar la consulta que esta fallando ejecuto paso a paso con Break Point cada una de ellas hasta encontrar la consulta que esta cascando el trabajo, una vez encontrada tengo que evaluar cual de las expresiones esta fallando reconstruyendo una a una cada expresión hasta encontrar el error, la pregunta es, existe algún método o función para encontrar la expresión que casca y no ir reconstruyendo una a una?

o cuales son las mejores practicas para minimizar estos errores y/o tenerlos bajo control.

Espero me puedan ayudar.

Erick Gamer
Aprendiz de todos, maestro de nadie.
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable