Administrar y depurar consultas SQL en MS Access
MS Access tiene capacidades limitadas para administrar consultas SQL sin formato: el editor es bastante malo, no resalta la sintaxis, reformatea su SQL sin formato en una cadena larga y no puede insertar comentarios.
Depurar consultas SQL complejas también es una molestia: o tienes que dividirlas en muchas consultas más pequeñas que se vuelven difíciles de administrar cuando cambia tu esquema o terminas con una consulta gigante cuya depuración y actualización es una pesadilla.
¿Cómo gestiona sus consultas SQL complejas en MS Access y cómo las depura?
Editar
Por el momento, estoy usando principalmente Notepad++ para colorear la sintaxis y SQL Pretty Printer para reformatear sensiblemente el SQL sin formato desde Access.
Usar un repositorio externo es útil, pero mantenerlo siempre existe el riesgo de que las dos versiones no estén sincronizadas y aún tenga que eliminar los comentarios antes de intentar la consulta en Access...
Para depurarlos, los edito en un editor de texto independiente que me permite formatearlos de forma sensata. Cuando encuentro que necesito hacer cambios, edito la versión en el editor de texto y la pego nuevamente en Access, sin editar nunca la versión en Access.
Sigue siendo un PITA importante.
Tengo algunos consejos específicos de SQL en VBA.
Coloque su código SQL con una variable de cadena. Solía hacer esto:
Set RS = DB.OpenRecordset("SELECT ...")
Eso es difícil de gestionar. Haz esto en su lugar:
strSQL = "SELECT ..."
Set RS = DB.OpenRecordset(strSQL)
A menudo no es posible corregir una consulta a menos que vea exactamente lo que se está ejecutando. Para hacer eso, descargue su SQL en la ventana Inmediato justo antes de la ejecución:
strSQL = "SELECT ..."
Debug.Print strSQL
Stop
Set RS = DB.OpenRecordset(strSQL)
Pegue el resultado en el generador de consultas estándar de Access (debe usar la vista SQL ). Ahora puedes probar la versión final, incluidas las variables controladas por código.
Cuando esté preparando una consulta larga como una cadena, divida su código:
strSQL = "SELECT wazzle FROM bamsploot" _
& vbCrLf & "WHERE plumsnooker = 0"
Aprendí a usarlo por primera vez vbCrLf
cuando quería embellecer mensajes largos para el usuario. Más tarde descubrí que hace que SQL sea más legible durante la codificación y mejora la salida de Debug.Print
. (Otro beneficio pequeño: no se necesita espacio al final de cada línea. La sintaxis de nueva línea lo incorpora).
(NOTA: podría pensar que esto le permitirá agregar comentarios a la derecha de las líneas SQL. Prepárese para la decepción).
Como se dijo en otra parte aquí, los viajes a un editor de texto ahorran tiempo. Algunos editores de texto proporcionan un mejor resaltado de sintaxis que el editor oficial de VBA. (Diablos, StackOverflow funciona mejor). También es eficiente para eliminar elementos de Access, como referencias de tablas superfluas y montones de paréntesis en la cláusula WHERE.
Flujo de trabajo para la resolución de problemas graves:
VBA Debug.Print > (capture query during code operation)
query builder > (testing lab to find issues)
Notepad++ > (text editor for clean-up and review)
query builder > (checking, troubleshooting)
VBA
Por supuesto, la resolución de problemas suele ser una cuestión de reducir la complejidad de una consulta hasta que sea capaz de aislar el problema (¡o al menos hacerlo desaparecer!). Luego podrás reconstruirlo hasta obtener la obra maestra que deseabas. Debido a que pueden ser necesarios varios ciclos para resolver un problema complicado, es probable que utilice este flujo de trabajo repetidamente.
Escribí Access SQL Editor , un complemento para Microsoft Access, porque escribo muchas consultas de transferencia y SQL más complejo dentro de Access. Este complemento tiene la ventaja de poder almacenar SQL formateado (¡con comentarios!) dentro de su propia aplicación Access. Cuando las consultas se copian a una nueva aplicación de Access, se conserva el formato. Cuando el editor integrado modifique su formato, la herramienta mostrará su consulta original y le notificará la diferencia.
Actualmente no depura; Si hubiera suficiente interés, continuaría con esto, pero por el momento el conjunto de funciones se mantiene pequeño intencionalmente.
No es gratuito por el momento, pero adquirir una licencia es muy económico. Si no puedes permitírtelo, puedes contactar conmigo . Hay una prueba gratuita de 14 días aquí .
Una vez instalado, puede acceder a él a través del menú Complementos (en Access 2010 es Herramientas de base de datos->Complementos).