miércoles, 23 de julio de 2014

Consulta sql desde Excel VBA (a una base Mysql)



 Excel y bases de datos MySQL
Conectarse a una base de datos MySQL desde Microsoft Excel (utilizando Connector/ODBC) para recuperar registros y visualizarlos en un formulario VBA. En esta oportunidad detallaremos paso a paso como crear una consulta desde un formulario en Excel VBA utilizando Mysql como motor de base de datos.
Lo primero es ya tener nuestra base de datos con los siguientes campos:
Nombre de la tabla:
departamento

Nombre de los campos:
 IdDep
NomDepartamento

Ya teniendo todo listo con algunos datos, quedaría como en la imagen.

Consulta sql desde Excel VBA a Mysql)

Para poder visualizar nuestros datos necesitaremos de un formulario que se llamara "Form_Prueba" como el de la imagen, un combobox que lo llamaremos "Cbo_Municipio" y un botón que le pondremos "Bton_Salir"


Consulta sql desde Excel VBA

En un modulo insertamos el siguiente código:

Sub Departamentos()
On Error GoTo tratar_errror
Dim rsMySql As ADODB.Recordset
Dim strMySql As String

Set rsMySql = New ADODB.Recordset

strMySql = "select IdDep, NomDepartamento from departamento;" 'Nuestra consulta SQL, que vemos en la imagen anterior en Workbench

rsMySql.Open strMySql, connMySql

'El combo se crea con 2 columnas uno para el ID y el Otro para el Nombre
Form_Prueba.Cbo_Municipio.Clear ' Limpio el combo
Form_Prueba.Cbo_Municipio.ColumnCount = 2 'Numero de columnas que necesitamos
Form_Prueba.Cbo_Municipio.ColumnWidths = "20;100" 'Ancho de las columnas
Form_Prueba.Cbo_Municipio.TextColumn = 2 'Visualizaremos la columna 2 al seleccionar un dato

Do While Not rsMySql.EOF
Form_Prueba.Cbo_Municipio.AddItem rsMySql.Fields("NomDepartamento")
Form_Prueba.Cbo_Municipio.List(i, 1) = rsMySql.Fields("NomDepartamento")
Form_Prueba.Cbo_Municipio.List(i, 0) = rsMySql.Fields("IdDep")
i = i + 1
rsMySql.MoveNext
Loop

rsMySql.Close
Exit Sub 'Sale si no da error
tratar_errror:
End Sub

 Y el el formulario el siguiente código

 Private Sub UserForm_Initialize()
Call ConexionMysql
Call Departamentos
End Sub

Private Sub Bton_Salir_Click()
Unload Me
Call CierraConexion
End Sub

Utilizaremos los códigos en una publicación anterior, para poner en práctica, lo que se refiere a la conexion y cerrar la conexion, si todo va bien, el resultado que obtendremos será como la siguiente imagen.

Consulta sql desde Excel a una base Mysql

Espero que le encuentren utilidad.

No hay comentarios :

Publicar un comentario