Cómo actualizar los datos de una tabla MySQL Server de forma automática usando Microsoft Access, con tablas vinculadas mediante ODBC. Explicamos cómo conectar Microsoft Access con un servidor de MySQL Server. Mostramos también cómo importar una hoja de Excel a Microsoft Access.
- Requisitos para actualizar datos de una tabla MySQL desde Microsoft Access.
- Vincular tabla de MySQL en Microsoft Access.
- Importar hoja de Excel en Access.
- Crear consulta Access para actualizar datos de tabla MySQL.
Requisitos para actualizar datos de una tabla MySQL desde Microsoft Access
En este tutorial explicaremos cómo utilizar la herramienta Microsoft Access para actualizar datos de una tabla MySQL Server de forma automática, con consultas Microsoft Access. Para ello, el primer requisito es disponer de un servidor con MySQL Server, que será donde tengamos las tablas a las que accederemos desde Microsoft Access. En los siguientes tutoriales explicamos cómo instalar MySQL Server en distintos sistemas operativos:
- Cómo instalar MySQL Server en Windows XP.
- Instalar y configurar MySQL Server 5 en Linux Suse 10.
- Cómo instalar MySQL Server en Linux y permitir conexiones remotas.
- Instalar y configurar MySQL Server 5 en Linux Suse 10.
Puesto que usaremos Microsoft Access 2007 (es válida cualquier versión) necesitaremos tener esta herramienta instalada con su correspondiente licencia.
Para enlazar Microsoft Access 2007 con MySQL Server usaremos ODBC, en el siguiente tutorial explicamos paso a paso cómo instalar el driver ODBC y cómo vincular tablas de MySQL Server con Microsoft Access:
Como ejemplo, el origen con los datos válidos para actualizar será una hoja de Excel, explicaremos también cómo importar una hoja de Excel a Access.
Vincular tabla de MySQL en Microsoft Access
Para realizar este tutorial necesitaremos vincular en Microsoft Access una tabla de MySQL Server, a continuación mostramos un tutorial sobre cómo vincular tablas de MySQL en Access:
Importar hoja de Excel en Access
Como ejemplo para actualizar los datos de una tabla MySQL Server desde Microsoft Access usaremos los datos de un libro Excel, por lo tanto en primer lugar importaremos esos datos de Excel a Access, para ello desde la bd de Access con la tabla vinculada a MySQL (como hemos explicado aquí) pulsaremos en «Datos externos» – «Excel»:
Seleccionaremos el fichero Excel a importar, para ello pulsaremos en «Examinar»:
Elegiremos el fichero de Excel a importar a Access y pulsaremos «Abrir»:
Seleccionaremos el tipo de importación/vinculación:
- Importar el origen de datos en una nueva tabla de la base de datos actual: se creará una nueva tabla en Access con los datos importados de Excel. La tabla de Access no tendrá relación con la origen de Excel, cualquier cambio en Excel no se actualizará en Access y viceversa.
- Anexar una copia de los registros a la tabla…: si la tabla seleccionada de Access ya existe, agregará los registros a la tabla existente. La tabla de Access no tendrá relación con la origen de Excel, cualquier cambio en Excel no se actualizará en Access y viceversa.
- Vincular al origen de datos creando una tabla vinculada: Access creará una tabla que mantendrá un vínculo a los datos de Excel. Los cambios realizados en los datos de origen Excel se reflejarán en la tabla vinculada. Sin embargo, los datos de la tabla vinculada Access no podrán ser modificados.
En nuestro caso seleccionaremos «Importar el origen de datos en una nueva tabla de la base de datos actual» y pulsaremos «Aceptar»:
Se iniciará el asistente para importación de hojas de cálculo, si la primera fila de la hoja de Excel contiene encabezados de columna (título), marcaremos «Primera fila contiene encabezados de columna» y pulsaremos «Siguiente»:
El asistente para importar hojas de cálculo a Access nos mostrará las columnas de Excel, seleccionaremos cada una e indicaremos los siguientes datos:
- Nombre de campo: nombre que Access asignará a la columna actual de Excel.
- Tipo de dato: tipo de dato que se asignará al campo de la tabla Access.
- Indexado: si queremos establecer un índice para el campo seleccionaremos «Sí» en el desplegable.
- No importar el campo (Saltar): si no queremos que Access importe este campo marcaremos esta opción.
En nuestro ejemplo la primera columna será «DNI», de tipo «Texto»:
La segunda columna será el campo «Horas», de tipo «Doble»:
El asistente nos detecta una tercera columna que no queremos importar, la seleccionaremos y marcaremos «No importar el campo (Saltar)»:
A continuación el asistente nos permitirá elegir la clave primaria (primary key) de la tabla Access que se creará con los datos Excel, las opciones son:
- Permitir a Access agregar la clave principal: el asistente creará una columna autoincremental que será clave primaria de la tabla.
- Elegir la clave principal: podremos seleccionar como clave primaria alguno de los campos que se importarán de Excel.
- Sin clave principal: no se creará la clave principal.
En nuestro caso, puesto que será una tabla temporal que solo usaremos para realizar la actualización de datos MySQL no agregaremos clave principal por lo que marcaremos «Sin clave principal» y pulsaremos «Siguiente»:
Indicaremos el nombre para la tabla Access que se creará con los datos de la hoja Excel seleccionada y pulsaremos «Finalizar»:
Tras la importación de Excel a Access el asistente nos indicará que el proceso ha finalizado y si queremos guardar los pasos datos de importación para poder usarlos posteriormente como una plantilla. Pulsaremos «Cerrar»:
Si todo ha sido correcto tendremos una nueva tabla en nuestra base de datos Access con los datos de Excel:
Crear consulta Access para actualizar datos de tabla MySQL
En el ejemplo de este tutorial hemos vinculado una tabla MySQL llamada «usuario» y hemos importado una hoja Excel en una tabla de nuestra bd Access llamada «usuario_horas». La tabla que queremos actualizar, «usuario», entre otros campos, tiene uno que es unívoco y clave principal llamado «DNI» y tiene otro campo llamado «Horas» que será el que actualicemos. Para actualizar datos de una tabla a otra en Access hay que usar una columna común entre ambas tablas cuyos datos sean unívocos (no se repitan), por lo tanto en la tabla importada de Excel también usaremos el «DNI» como enlace entre ambas.
Crearemos la consulta Access pulsando en «Crear» – «Diseño de consulta»:
Seleccionaremos las dos tablas «usuario» y «usuario_horas» y pulsaremos «Agregar»:
A continuación indicaremos el tipo de consulta, en nuestro caso será de actualización, por lo que pulsaremos en «Actualizar»:
Ahora realizaremos el enlace que comentamos al principio, usaremos la columna «DNI» como enlace entre ambas tablas, por lo que seleccionaremos «DNI» de la tabla «usuario» (tabla de MySQL a actualizar) y lo arrastraremos al campo «DNI» de la tabla «usuario_horas» (tabla Excel que contiene los datos a actualizar en MySQL):
En la parte inferior de la consulta de actualización indicaremos los siguientes datos:
- Campo: nombre del campo de la tabla MySQL que queremos actualizar, en nuestro caso «horas».
- Tabla: nombre de la tabla de MySQL que queremos actualizar, en nuestro caso «usuario».
- Actualizar a: indicaremos aquí el nombre de la tabla y campo con los datos para actualizar (la tabla que proviene de Excel), con el formato [nombre_tabla].[campo], en nuestro caso «[usuarios_horas].[horas].
- Criterios: si queremos utilizar algún filtro para la actualización, por ejemplo actualizar sólo aquellos registros de la tabla MySQL «usuario» que tengan el campo «activo» a valor «S», podremos indicarlo con [usuario].[activo]=»S».
Si queremos ver la consulta SQL que se Access creará automáticamente para la actualización pulsaremos en «SQL» en la parte inferior derecha:
La consulta SQL generada por el asistente para esta actualización será:
1 |
UPDATE usuario <br>INNER JOIN usuarios_horas ON usuario.dni = usuarios_horas.DNI <br>SET usuario.horas = [usuarios_horas].[HORAS]<br>WHERE (([usuario].[activo]="S")); |
Una vez creada la consulta de actualización pulsaremos en «Ejecutar» para proceder a actualizar los datos de la tabla Excel a la tabla MySQL usando Access:
El asistente para actualizar datos nos mostrará el número de registros que se actualizarán, si es correcto pulsaremos «Sí»:
Tras el proceso, podremos comprobar los datos actualizados en la tabla vinculada a MySQL «usuario»:
Y, por supuesto, al ser una tabla vinculada, la actualización realizada en Access se habrá aplicado en MySQL directamente, usando cualquier aplicación para ejecutar consultas y mostrar el resultado en un servidor MySQL podremos comprobar que los datos se han actualizado correctamente en la tabla MySQL: