Buscar en este blog

viernes, 25 de marzo de 2011

Conexión con bases de datos (6ª parte)

Las consultas constituyen una herramienta esencial en cualquier sistema de gestión de bases de datos y, en este sentido, AutoCAD no se queda atrás. Normalmente, el principal objetivo de una consulta es la selección de grupos específicos de registros que cumplen una serie de criterios concretos, pero también se pueden utilizar para combinar información de distintas tablas, proporcionando una vista unificada de la información, o para efectuar operaciones sobre las tablas, como la adición, modificación o eliminación de registros.

En esta entrega veremos los fundamentos de la creación de consultas y los distintos métodos que proporciona AutoCAD para especificar criterios de selección, todo ello con el fin último de identificar los objetos del dibujo que cumplen dichos criterios.

Definición y utilización de consultas

En numerosas ocasiones se necesita operar solamente con un subconjunto de registros en lugar de hacerlo con la tabla completa. Estos subconjuntos de registros se obtienen por medio de consultas. En todos los sistemas de bases de datos, las consultas constituyen el mecanismo fundamental de obtención de información concreta procedente de una o varias tablas. En AutoCAD, las consultas se formulan a través del Editor de consultas, que proporciona cuatro métodos diferentes para su composición y ejecución:
  • Consulta rápida. Permite realizar consultas sencillas basadas en un único campo de la tabla, un solo operador y un solo valor.
  • Rango consulta. Crea una consulta que devuelve todos los registros u objetos incluidos en un determinado rango de valores.
  • Constructor de consultas. Permite componer consultas basadas en diferentes criterios de búsqueda, seleccionar determinados campos y especificar el orden de los mismos.
  • Consulta SQL. Este método permite crear y ejecutar consultas escribiendo directamente las sentencias correspondientes en lenguaje SQL.
Cuando se ejecuta una consulta, los registros resultantes se muestran en el Visor de datos. También existe la posibilidad de seleccionar simultáneamente los objetos vinculados en el dibujo. Las consultas se pueden guardar en el dibujo para ser reutilizadas posteriormente, en cuyo caso se muestran como nodos asociados al dibujo en el Administrador de Conexión BD. Además, un conjunto de consultas puede ser exportado a un archivo externo (con extensión DBQ), que puede ser importado en un dibujo diferente.

Para poner en práctica el uso de consultas, comenzaremos creando una consulta rápida que localice en el dibujo Parcelas2.dwg todas las parcelas correspondientes a la calle Córdoba, de acuerdo con la información contenida en la tabla DATOS_PARCELAS de la base de datos Parcelas.mdb, que venimos utilizando en todas las entregas de esta serie.
  1. Si AutoCAD está cerrado, inicie el programa y abra el dibujo Parcelas2.dwg.
  2. Si la paleta del Administrador de Conexión BD no está abierta, pulse la combinación de teclas Ctrl+6 para abrirla.
  3. Si el origen de datos Parcelas no está conectado, haga clic con el botón derecho del ratón sobre el origen de datos Parcelas para acceder al menú contextual y seleccione la opción Conectar.
  4. Disponga la paleta del Administrador de Conexión BD de modo que esté anclada en el lado derecho de la ventana de AutoCAD. Después, pulse el botón derecho del ratón sobre la tabla DATOS_PARCELAS y seleccione la opción Nueva consulta, que abrirá el correspondiente cuadro de diálogo.
  1. Escriba Calle Córdoba en la casilla Nombre de nueva consulta y haga clic en el botón Continuar. Se abrirá el cuadro de diálogo Editor de consultas.

  1. Asegúrese de que esté seleccionada la ficha Consulta rápida. Seleccione el elemento CALLE en la lista Campo y la opción = Igual en la lista desplegable Operador.
  2. Haga clic en el botón Buscar valores. Se abrirá el cuadro de diálogo Valores de columna que mostrará una lista con los distintos valores contenidos en el campo seleccionado previamente, esto es, en el campo CALLE. Seleccione la calle Córdoba y pulse el botón Aceptar para regresar al editor de consultas.
  3. Desactive la casilla Indicar registros en visor de datos y asegúrese de que la casilla Indicar objetos en dibujo esté activada. Antes de continuar, compruebe que todas las opciones del cuadro de diálogo están configuradas tal y como muestra la figura siguiente.
  1. Ahora haga clic en el botón Almacenar. Esta operación añadirá un nodo nuevo bajo el nombre del dibujo en el Administrador de Conexión BD. De este modo la consulta podrá volver a utilizarse cuantas veces sea necesario sin necesidad de volver a definirla, lo que resulta especialmente útil en consultas complejas.
  2. Finalmente, pulse el botón Ejecutar. Si todo ha ido bien, habrán quedado seleccionadas en el dibujo todas las parcelas de la calle Córdoba.
Evidentemente, cuando los objetos del dibujo se seleccionan a partir de una consulta es posible operar con ellos igual que si hubieran sido designados por el procedimiento convencional. Así, por ejemplo, podríamos cambiar de capa o de color las polilíneas designadas, dibujar un sombreado sólido en su interior para componer un plano de parcelas coloreadas por calles, etc.

Las consultas se pueden crear también desde el botón Nueva consulta de la barra de herramientas del Administrador de Conexión BD, desde el menú desplegable Conexión BD (submenú Consultas, opción Nueva consulta en una tabla externa) o bien mediante el comando DBCNEWQRYTABLE. Estos dos últimos procedimientos muestran previamente un cuadro de diálogo para elegir la tabla que servirá de base para la consulta.

Existe la posibilidad de crear la consulta basándose directamente en la tabla asociada a una plantilla de vínculos, en cuyo caso se debe seleccionar previamente la plantilla de vínculos en el Administrador de Conexión BD y utilizar después el botón Nueva consulta de la barra de herramientas o la correspondiente opción del menú contextual. Esta operación también se puede iniciar desde el menú desplegable Conexión BD (submenú Consultas, opción Nueva consulta en una plantilla de vínculos) o con el comando DBCNEWQRYLT.

Como hemos avanzado anteriormente, las consultas guardadas en el dibujo se pueden ejecutar directamente sin necesidad de pasar por el editor de consultas. Para ello, basta seleccionar la consulta en el Administrador de Conexión BD y pulsar el botón Ejecutar consulta de su barra de herramientas o seleccionar la opción Ejecutar en el menú contextual. También se puede efectuar esta operación desde el menú desplegable Conexión BD (submenú Consultas, opción Ejecutar consulta) y mediante el comando DBCEXECUTEQRY.

En el siguiente ejemplo crearemos y ejecutaremos una consulta basada en un rango de valores para localizar las parcelas cuya superficie esté comprendida entre 1600 y 2000 metros cuadrados.
  1. Pulse el botón derecho del ratón sobre la tabla DATOS_PARCELAS y seleccione la opción Nueva consulta. Escriba Superficie 1600-2000 en la casilla Nombre de nueva consulta y haga clic en el botón Continuar para abrir el editor de consultas.
  2. Seleccione la ficha Rango consulta.
  3. Seleccione el campo SUPERFICIE. Escriba el valor 1600 en la casilla Desde y el valor 2000 en la casilla Punto a atravesar. ¡El nombre de esta última casilla es un verdadero misterio!
  1. Haga clic en el botón Almacenar para guardar la consulta y crear el correspondiente nodo en el Administrador de Conexión BD.
  2. Por último, pulse el botón Ejecutar.
Como no podía ser de otro modo, en el dibujo habrán quedado seleccionadas todas las parcelas que cumplen la condición que hemos establecido.

Cuando las consultas son más complicadas es necesario hacer uso de las dos últimas fichas del cuadro de diálogo Editor de consultas. En el siguiente ejemplo vamos a componer una consulta que busque las parcelas de las calles Córdoba y Granada cuya superficie sea inferior a 1250 metros cuadrados. Esta consulta exige el uso de dos columnas de la tabla y, además, de dos valores de una misma columna, por lo que no puede componerse en las fichas Consulta rápida o Rango consulta.
  1. Pulse el botón derecho del ratón sobre la tabla DATOS_PARCELAS y seleccione la opción Nueva consulta. Escriba Córdoba Granada 1250 en la casilla Nombre de nueva consulta y haga clic en el botón Continuar para abrir el editor de consultas.
  2. Seleccione la ficha Constructor de consultas.
  3. Sitúe el puntero del ratón en la primera celda de la columna Campo, pulse el botón derecho y seleccione la opción Borrar rejilla en el menú contextual. AutoCAD mostrará un mensaje de advertencia pidiendo confirmación para continuar con la operación. Pulse en el botón .
  4. Haga clic en la primera celda de la columna Campo para que aparezca una flecha en su lado derecho. Haga clic en la flecha y seleccione el campo CALLE en la lista que se habrá desplegado.
  5. Haga clic en la primera celda de la columna Operador y seleccione = Igual.
  6. Haga clic en la primera celda de la columna Valor para que aparezca un botón etiquetado con puntos suspensivos [...]. Pulse en el botón [...] y se abrirá el cuadro de diálogo Valores de columna. Seleccione la calle Córdoba y cierre el cuadro de diálogo pulsando en el botón Aceptar.
  7. Haga clic dos veces en la primera celda de la columna Lógico para seleccionar el valor Or. El primer clic mostrará el valor And y el segundo el valor Or.
  8. Repita los pasos 4, 5 y 6 con la segunda celda de las columnas Campo, Operador y Valor, seleccionando el campo CALLE, el operador = Igual y el valor Granada.
Observe que hay dos columnas estrechas sin nombre, una a la izquierda de la columna Campo y otra a la derecha de la columna Valor. Estas columnas permiten agrupar entre paréntesis dos o más líneas activando o desactivando los paréntesis de apertura o de cierre al hacer clic en sus respectivas celdas.
  1. Haga clic en la celda de paréntesis de la primera fila a la izquierda de la columna Campo. AutoCAD añadirá un paréntesis de apertura en esa celda
  2. Haga clic en la celda de paréntesis de la segunda fila a la derecha de la columna Valor. Se añadirá un paréntesis de cierre en esa celda.
  3. Haga clic en la segunda celda de la columna Lógico para seleccionar el valor And.
  4. Repita de nuevo los pasos 4, 5 y 6 con la tercera celda de las columnas Campo, Operador y Valor, seleccionado el campo SUPERFICIE, el operador < Menor que y escribiendo el valor 1250.
  5. Active la casilla Indicar registros en visor de datos.
  6. Seleccione el campo EMPRESA en la lista Campos de tabla y pulse el botón Añadir que está situado junto a la etiqueta Mostrar campos. El campo EMPRESA se añadirá a la lista.
  7. Repita la operación anterior para añadir también los campos CALLE y SUPERFICIE a la lista Mostrar campos.
  8. Ahora seleccione el campo SUPERFICIE en la lista Mostrar campos, haga clic en el botón Añadir situado a la derecha de la etiqueta Ordenar por y haga clic en el botón etiquetado con dos pequeños triángulos para establecer una ordenación descendente (el criterio de ordenación por defecto es ascendente).
  9. Finalmente, active la casilla Indicar objetos en dibujo
Antes de seguir compruebe que todos los parámetros del cuadro de diálogo están configurados tal y como muestra la figura siguiente.
  1. Pulse el botón Ejecutar.
Al ejecutar esta consulta, los registros resultantes se mostrarán en la ventana del Visor de datos y los objetos del dibujo vinculados con ellos quedarán seleccionados.

Si se quisiera regresar al editor de consultas para redefinir o modificar una consulta que no hubiera sido guardada (como en nuestro ejemplo), puede hacerse mediante el icono Volver a Consulta de la barra de herramientas del Visor de datos.

La cuarta ficha del editor de consultas, etiquetada como Consulta SQL, proporciona el método más flexible para la composición de consultas. Dispone de un área de texto donde escribir cualquier sentencia SQL válida. Es la única ficha del cuadro de diálogo donde se puede formular una consulta que haga referencia a más de una tabla. También es la única ficha desde la que se pueden ejecutar sentencias que no devuelvan ningún conjunto de registros, sino que efectúen operaciones directas sobre las tablas, como añadir un nuevo registro (INSERT), modificar los valores de los campos de un registro (UPDATE), eliminar uno o varios registros (DELETE), etc.

Muchos de los controles existentes en las demás fichas del cuadro de diálogo también están disponibles en ésta para facilitar la composición de la consulta. Así, se pueden seleccionar elementos en listas de tablas o de campos y, después, seleccionar valores que serán debidamente colocados en su lugar correspondiente de la sentencia.

Es evidente que es necesario poseer unos mínimos conocimientos sobre el lenguaje SQL para poder aprovechar las posibilidades que ofrece la ficha Consulta SQL. No obstante, aún en el caso de que no sea así, vamos a adentrarnos mínimamente en este lenguaje mediante un sencillo ejemplo.

  1. Haga clic en el icono Volver a Consulta de la barra de herramientas del Visor de datos. Se abrirá el cuadro de diálogo Editor de consulta y la ficha Constructor de consultas mostrará la última consulta ejecutada.

    Nota: Lamentablemente, la ficha Constructor de consultas tiene un error que se produce cuando se vuelve a abrir una consulta. El error consiste en que se añaden paréntesis de apertura y de cierre en todas las líneas, lo que es muy grave porque altera el comportamiento de los operadores lógicos produciendo resultados no deseados.

  2. Seleccione la ficha Consulta SQL.
  3. Elimine los paréntesis añadidos erróneamente, manteniendo sólo el paréntesis de apertura situado detrás de la palabra WHERE y el de cierre que está delante de la palabra AND.
  4. Cambie el texto < 1250.000 por > 1250.000.
  5. Haga clic en el botón Comprobar. AutoCAD analizará la sintaxis de la consulta y mostrará un mensaje con el resultado de la comprobación. En caso de detectarse algún error, deberá ser corregido antes de ejecutar la sentencia.
    1. Pulse el botón Ejecutar.
    Como en el caso anterior, al ejecutar la sentencia, el Visor de datos mostrará los registros que cumplen las condiciones establecidas y los objetos vinculados con ellos habrán quedado seleccionados en el dibujo.

    El cuadro de diálogo Opciones del visor de datos y de consulta, al que hicimos referencia en la entrega anterior de esta serie, contiene dos casillas de opciones relacionadas con las consultas que pueden resultar útiles en muchos casos.
    • Enviar como SQL original. Envía las consultas directamente a la base de datos original, sin efectuar una comprobación previa de la sintaxis. Debe utilizarse cuando se ejecutan sentencias específicas de un determinado sistema, que no se ajustan al estándar SQL.
    • Almacenamiento automático. Guarda las consultas en el dibujo actual automáticamente en el momento de su ejecución, sin necesidad de pulsar el botón Almacenar.
    Las consultas guardadas en los dibujos se pueden reutilizar en otros dibujos diferentes aprovechando las capacidades de exportación e importación que proporciona el Administrador de Conexión BD. Todas las consultas de un dibujo se puede exportar como un conjunto a un archivo de disco que tiene la extensión DBQ. Esta operación se puede efectuar mediante la opción Exportar conjunto de consultas del menú contextual del nodo de dibujo en el Administrador de Conexión BD, mediante la opción homónima del submenú Consulta en el menú desplegable Conexión BD o por medio del comando DBCEXPORTQS.

    Recíprocamente, la importación de un conjunto de consultas en un dibujo se puede realizar desde la opción Importar conjunto de consultas del menú contextual del nodo de dibujo en el Administrador de Conexión BD, mediante la opción homónima del submenú Consulta en el menú desplegable Conexión BD o mediante el comando DBCIMPORTQS.

    Otra forma muy sencilla de reutilizar consultas entre dibujos abiertos en la misma sesión es arrastrar la consulta de un nodo de dibujo a otro en el Administrador de Conexión BD.

    Finalmente, las consultas guardadas en un dibujo se pueden editar y/o borrar mediante las opciones correspondientes de sus menús contextuales en el Administrador de Conexión BD, del submenú Consulta en el menú Conexión BD o bien mediante los comandos DBCEDITQRY y DBCDELETEQRY, respectivamente.

    Ir a 5ª parte ...

    1 comentarios:

    Anónimo dijo...

    Genial Tutorial