martes, 3 de abril de 2007

Consulta de BD MySQL desde MS Excel

Me surgió la necesidad de acceder a una BD MySQL desde Excel, que es el software ofimático que utilizamos para la realización de todo tipo de informes, por ello, codifiqué un pequeño ejemplo que utilicé como base para un proyecto más profesional donde se vinculan distintas BD a una única plantilla Excel.

Para conseguir esto tan solo es necesario disponer del controlador "MySQL ODBC 3.51 Driver", que se puede obtener desde la página http://www.mysql.org/downloads/connector/odbc/ para realizar la conexión con la BD MySQL. Acto seguido, nos crearemos una cadena de conexión que usaremos para conectarnos con el servidor MySQL. En esta cadena tendremos que pasar distintos parámetros, como son: Nombre del Servidor MySQL, Usuario de acceso, Contraseña de Usuario y Nombre de la Base de Datos. Un ejemplo de cadena de conexión sería:

"Provider=MSDASQL; DRIVER={MySQL ODBC 3.51 Driver}; SERVER=" & HostName & "; DATABASE=" & NombreBaseDatos & "; UID=" & NombreUsuario & "; PWD=" & ContraUsuario & "; OPTION=3; PORT=3306"

Una vez hayamos establecido la conexión con la BD, podremos hacer uso de un simple RecordSet para consultar la/s tabla/s contenida/s. Por ejemplo:

"SELECT * FROM tablausuarios", CN, adOpenDynamic, adLockOptimistic

¿Qué nos quedaria?, pues ya hemos conectado con la BD, le hemos hecho una Query, y ahora nos queda mostrar los resultados. Para ello recorreremos todos los registros devueltos por nuestra consulta y plasmarlos en una tabla:

Do Until RS.EOF
Contador = Contador + 1
Hoja1.Range("A" + Trim(Str(Contador))).FormulaR1C1 = Trim(Str(Contador - 5))
Hoja1.Range("B" + Trim(Str(Contador))).FormulaR1C1 = RS("IDUsuario").Value
Hoja1.Range("C" + Trim(Str(Contador))).FormulaR1C1 = RS("Nombre").Value
Hoja1.Range("D" + Trim(Str(Contador))).FormulaR1C1 = RS("Apellidos").Value
Hoja1.Range("E" + Trim(Str(Contador))).FormulaR1C1 = RS("Login").Value
Hoja1.Range("F" + Trim(Str(Contador))).FormulaR1C1 = RS("Password").Value
RS.MoveNext
Loop


Y nada más, estos serían los tres pasos básicos para obtener reflejados los datos de una consulta SQL sobre una BD MySQL en una hoja de Excel.

Este sencillo ejemplo lo podeis descargar aquí, además está documentado para que nadie se pierda ;)

Pues nada más, espero que esto le sirva a más de uno que se haya visto en mi situación.

3 chismorreos:

Unknown dijo...

Como podéis ver, este foro engloba todos los temas. Espero que os sean útiles los apuntes de ANAXER y que se lo agradezcáis dejando vuestros comentarios aquí. Muchas gracias por tu trabajo!!!

lucho rojas dijo...

Bien me es de utilidad para actualizar mi data a mis archivos de excell de manera rapida.
pero aparte de odbc hay otra manera de conectarse

Houses dijo...

Hola, seria posible que volvieras a subir el Excel de esta entrada o remitirmelo por correo electrónico??

Saludos y muchas gracias.

 
Copyright 2013 Vitinillo BLOG.