Imprimir página | Cerrar ventana

Controlar errores en Expresiones

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=84849
Fecha de impresión: 12/Diciembre/2019 a las 20:11


Tema: Controlar errores en Expresiones
Publicado por: Erick Gamer
Asunto: Controlar errores en Expresiones
Fecha de publicación: 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.



Respuestas:
Publicado por: deneg_nhj
Fecha de publicación: 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


Publicado por: Erick Gamer
Fecha de publicación: 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

-------------
Aprendiz de todos, maestro de nadie.


Publicado por: pitxiku
Fecha de publicación: 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.


Publicado por: deneg_nhj
Fecha de publicación: 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


Publicado por: Erick Gamer
Fecha de publicación: 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.


Publicado por: Erick Gamer
Fecha de publicación: 02/Diciembre/2019 a las 22:49
Pueden cerrar este hilo por favor!!!!

Erick Gamer


-------------
Aprendiz de todos, maestro de nadie.



Imprimir página | Cerrar ventana