Buscar en este blog

lunes, 16 de mayo de 2011

Conexión con bases de datos (9ª y última parte)

Con esta novena entrega terminamos nuestra serie dedicada al entorno de conectividad de AutoCAD. A lo largo de la serie hemos expuesto con detalle todos y cada uno de los aspectos esenciales del entorno, apoyando las explicaciones con ejemplos prácticos basados en una tabla de una base de datos de Microsoft Access, cuya conexión dejamos debidamente configurada en la primera entrega.

La única cuestión que no hemos tratado todavía, y de la que nos ocuparemos en este artículo, es el proceso de conexión con otros sistemas de bases de datos, cuyo conocimiento es esencial para aprovechar las posibilidades que ofrece el entorno de conectividad con independencia de cuál sea el sistema del que provenga la información.


Conexión con otros sistemas de bases de datos

AutoCAD puede conectar con archivos procedentes de diferentes sistemas de bases de datos. En algunos casos la conexión puede hacerse directamente mediante controladores OLE DB, mientras que en otros es preciso crear previamente un origen de datos ODBC. Puesto que resulta prácticamente imposible analizar los procedimientos de conexión para todos los sistemas de bases de datos, nos limitaremos a exponer la forma de conectar con hojas de cálculo creadas con Microsoft Excel, las cuales pueden actuar como si fueran verdaderas bases de datos.

El proceso de conexión con una hoja de cálculo de Microsoft Excel requiere efectuar tres pasos, que son los siguientes:
  1. Definir, en la propia de hoja de cálculo, un rango de celdas con nombre para que puedan ser consideradas como una tabla.
  2. Crear un origen de datos ODBC para el archivo XLS (o XLSX) de Excel.
  3. Crear un origen de datos en AutoCAD que haga referencia al origen de datos ODBC.
Para poner en práctica este procedimiento utilizaremos el archivo Parcelas.xls, que no es más que la versión Excel de la tabla DATOS_PARCELAS que hemos venido utilizando en todas las entregas de esta serie.

Comenzaremos por asignar un nombre al conjunto de celdas que definen los datos. Evidentemente, para poder efectuar esta operación es preciso que el programa Microsoft Excel esté instalado en su sistema. De lo contrario y puesto que la conexión con la hoja de cálculo desde AutoCAD no requiere la presencia de Microsoft Excel, puede omitirse este primer paso y utilizar directamente el archivo Parcelas2.xls donde el rango de celdas ya tiene asignado un nombre.
  1. Inicie Microsoft Excel y abra el archivo Parcelas.xls.
  1. Pulse la combinación de teclas Ctrl+Inicio para situarse en la primera celda de la hoja (la celda A1 que contiene el texto ID_REF).
  2. Pulse la combinación de teclas Mayús+Ctrl+Fin para seleccionar la tabla completa, es decir, todas las celdas que contienen datos.
  3. Si dispone de la versión 2010 de Microsoft Excel, seleccione la ficha Fórmulas y haga clic sobre el icono Asignar nombre, en el grupo Nombres definidos, para abrir el cuadro de diálogo Nombre nuevo. Escriba DATOS_PARCELAS en la casilla Nombre y cierre el cuadro de diálogo pulsando en el botón Aceptar.
En las versiones 2000 o 2003 de Microsoft Excel, esta misma operación se efectúa en el cuadro de diálogo Definir Nombre, al que se accede desde el menú Insertar, seleccionando el submenú Nombre y la opción Definir.
  1. Finalmente, guarde la hoja de cálculo con el nombre Parcelas2.xls y cierre el programa Microsoft Excel.
Esta operación completa el primer paso del proceso de conexión. La asignación de un nombre al rango de celdas es esencial para que la hoja de cálculo pueda actuar como una tabla de base de datos.

El siguiente paso consiste en la creación de un origen de datos ODBC que haga posible el acceso al archivo Parcelas2.xls. En este sentido, recuerde que si está utilizando una versión de 64 bits de Windows, debe tener instalado el Componente redistribuible del motor de base de datos de Microsoft Access 2010, que puede descargar de forma totalmente gratuita desde la página web de Microsoft http://www.microsoft.com/downloads/es-es/details.aspx?FamilyID=C06B8369-60DD-4B64-A44B-84B371EDE16D. La instalación de este componente es innecesaria si su sistema cuenta con la versión 2010 del paquete Microsoft Office.
  1. Abra la carpeta Herramientas administrativas del Panel de control de Windows y haga doble clic sobre el icono Orígenes de datos ODBC. Esta operación iniciará el Administrador de orígenes de datos ODBC.
  1. Asegúrese de que esté seleccionada la ficha DSN de usuario y haga clic en el botón Agregar, que abrirá el cuadro de diálogo Crear nuevo origen de datos.
  2. Seleccione el controlador Microsoft Excel Driver en la lista central.
  1. Pulse el botón Finalizar para pasar a la Configuración de ODBC Microsoft Excel.
  2. Escriba PARCELAS_XLS en la casilla Nombre del origen de datos. Haga clic en el botón Seleccionar libro, localice en el disco el archivo Parcelas2.xls, que contiene la hoja de cálculo con el rango de celdas al que hemos asignado un nombre, y selecciónelo.
  1. Pulse el botón Aceptar para cerrar el cuadro de diálogo de configuración y regresar al Administrador de orígenes de datos ODBC.
  2. Cierre también el Administrador de orígenes de datos ODBC haciendo clic en el botón Aceptar.
La última y definitiva operación que nos queda por hacer es la creación del origen de datos en AutoCAD, que prácticamente es idéntica a la que hicimos en su momento para conectar con la base de datos de Microsoft Access.

En nuestro caso y con el fin de no ser repetitivos, en lugar de crear un nuevo origen de datos modificaremos la configuración del origen de datos Parcelas que ya tenemos creado en el Administrador de Conexión BD.
  1. Inicie AutoCAD con un dibujo nuevo o abriendo un dibujo cualquiera.
  2. Pulse la combinación de teclas Ctrl+6 para abrir la paleta del Administrador de conexión BD.
  3. Haga clic con el botón derecho del ratón sobre el origen de datos Parcelas y seleccione la opción Configurar en el menú contextual. Se abrirá el cuadro de diálogo Propiedades de vínculo de datos.
  4. Asegúrese de que esté seleccionada la ficha Proveedor y seleccione la opción Microsoft OLE DB Provider for ODBC Drivers en la lista Proveedores de OLE DB, tal y como muestra la figura siguiente.
  1. Haga clic en el botón Siguiente para pasar la ficha Conexión.
  2. Despliegue la lista Usar el nombre del origen de datos y seleccione la opción PARCELAS_XLS, que es el nombre del origen de datos ODBC que dejamos configurado en la operación anterior.
  1. Haga clic en el botón Probar conexión. Si todo ha ido bien aparecerá un mensaje indicando que la prueba de conexión fue satisfactoria. De lo contrario, tendrá que verificar la correcta la configuración del origen de datos ODBC.
  2. Pulse el botón Aceptar para completar la configuración del origen de datos.
  3. Haga doble clic sobre el nodo Parcelas en el Administrador de Conexión BD para conectar con el origen de datos.
Una vez terminado todo el proceso, podremos utilizar el nuevo origen de datos exactamente igual que si se tratara de la base datos original de Microsoft Access.

La única diferencia con la configuración anterior es que, ahora, la tabla DATOS_PARCELAS no puede abrirse en modo de edición en el Visor de datos. Esta limitación se debe a que el controlador ODBC de Microsoft Excel no admite cursores actualizables, una propiedad que debe soportar el proveedor de datos para permitir la modificación directa de los mismos en el Visor de datos.



Índice completo de artículos publicados de la serie Conexión con bases de datos:

4 comentarios:

quelo dijo...

Muchas gracias.Soy arquitecto urbanista y estas sesiones me has sido de graan utilidad.

Ahora voy a investigar como combinar una base de datos externa con las propiedades de dibujo de los objetos a los que está vinculada. Por ejemplo añadir una columna a la tabla que muestre las superficies de los objetos y que se actualice si éstos se modifican.

Toni dijo...

Llevo tiempo interesado con la vinculación de Bases de datos a documentos y lo he llevado a la práctica sobretodo en archivos de texto.

La finalidad que he perseguido es tener plantillas de los documentos vinculadas a una base de datos tipo Access con los campos colocados convenientemente para, en el momento de crear un nuevo documento, seleccionar el registro del expediente de modo que en cada lugar aparezca el dato del campo correspondiente. Esto, en el caso de un programa de tratamiento de textos como Word se puede “resolver” con la cinta de opciones: correspondencia.

Lograr esta finalidad con autocad me está costando más, porque no encuentro la función que seleccione un único registro de mi base de datos para hacer lo análogo de la función: buscar destinatario de Word (cinta de opciones: correspondencia), de modo que he “resuelto” el problema interponiendo una hoja de cálculo tipo Excel en cada expediente para filtrar el registro que me interesa de la base de datos, y referenciando la hoja a autocad mediante el comando insertar tabla de un vínculo de datos. El resultado, aunque funciona, es bastante torpe pues precisa tener esa hoja en la carpeta de cada expediente actualizada a los cambios de la base de datos y vinculada a los archivos de autocad mediante rutas relativas (una hoja de cálculo con toda la base de datos resulta poco manejable para este procedimiento en el archivo dwg), y por contra ofrece todas las posibilidades de la hoja de cálculo para combinar los campos en las cadenas de texto que se precisen en los planos.

He leído con expectación el artículo para ver si existe una manera ágil de conseguir la finalidad que persigo sin necesidad de tener que interponer la hoja de cálculo, reconozco que no le he podido dedicar toda la atención que se merece el artículo y que la solución que busco seguro que estará implícita en él, pero antes de seguir investigando he decidido exponer el tema por si el administrador o alguno de los visitantes del blog quisiera darme alguna sugerencia. Gracias y enhorabuena.

Fco Mondra dijo...

Impresionante documento, con esto solo podemos obtener magníficos e impresionantes resultados. Tengo un libro de Autocad 2015 de 1300 hojas y no me sirvió de nada. Felicitaciones y mi agradecimiento.

Unknown dijo...

Es maravilloso, gracias por tanta amabilidad, me ha resultado excepcionalmente util!