none
Como realizar un Select y un Insert desde Excel a Mysql mediante ODBC ADODB RRS feed

  • Pregunta

  • Hola a todos, espero estar en el foro correcto entre las categorias y los resultados del filtro no encontre un foro dedicado exclusivamente a excel o datos con ODBC en office.

    se me encomendo conectar Excel 2010 con una DB Mysql debido a que se requiere intercambiar informacion entre Mysql que envia a un archivo excel este a su vez tiene muchas formulas que calculan los datos enviados y sacan 4 resultados esos resultados nuevamente deben enviarse a Mysql,

    buscando por la web encontre que se podia usar ODBC consegui un ejemplo y lo adapte a mis requerimientos:

    http://forums.mysql.com/read.php?10,100302

    Option Explicit
    Option Base 1 
    Sub excelmysql()
    ‘ VBA to perform various actions on MySQL tables using VBA
    ‘ Majority of the original code adapted from Carlmack http://www.ozgrid.com/forum/showthread.php?t=46893 
    ‘ PLEASE DO THE FOLLOWING BEFORE EXECUTING CODE:
    ‘ 1)In VBE you need to go Tools/References and check Microsoft Active X Data Objects 2.x library
    ‘ 2)Install MySQL ODBC 3.51 Driver. See dev.mysql.com/downloads/connector/odbc/3.51.html or google “MySQL ODBC 3.51 Driver” 
    ‘————————————————————————-
    ‘ Connection variables
    Dim conn As New ADODB.Connection
    Dim server_name As String
    Dim database_name As String
    Dim user_id As String
    Dim password As String 
    ‘ Table action variables
    Dim i As Long ‘ counter
    Dim sqlstr As String ‘ SQL to perform various actions
    Dim table1 As String, table2 As String
    Dim field1 As String, field2 As String
    Dim rs As ADODB.Recordset
    Dim vtype As Variant 
    ‘———————————————————————-
    ‘ Establish connection to the database
    server_name = “127.0.0.1” ‘ Enter your server name here – if running from a local computer use 127.0.0.1
    database_name = “pruebas” ‘ Enter your database name here
    user_id = “prueba” ‘ enter your user ID here
    password = “12345678” ‘ Enter your password here 
    Set conn = New ADODB.Connection
    conn.Open “DRIVER={MySQL ODBC 3.51 Driver}” _
    & “;SERVER=” & server_name _
    & “;DATABASE=” & database_name _
    & “;UID=” & user_id _
    & “;PWD=” & password _
    & “;OPTION=16427” ‘ Option 16427 = Convert LongLong to Int: This 
    just helps makes sure that large numeric results get properly 
    interpreted 
    ‘————————————————————————-
    ‘ Various Actions 
    ‘ Define variables (not all of the variables will be required for each action)
    vtype = Array(“Text”, “LongText”, “Int(10)”, “Float”, “Double”, “Date”, “Time”) ‘ array of commonly used MySQL variable types
    table1 = “prueba”
    table2 = “resultado”
    field1 = “dato1”
    field2 = “dato2” 
    ‘———————————————
    ‘ Extract MySQL table data to first worksheet in the workbook
    GoTo skipextract
    Set rs = New ADODB.Recordset
    sqlstr = “SELECT * FROM tabla1” ‘ extracts all data
    rs.Open sqlstr, conn, adOpenStatic
    With Worksheets(“Hoja1”).Cells(“A1”) ‘ Enter your sheet name and range here
    .ClearContents
    .CopyFromRecordset rs
    End With
    skipextract: 
    ‘———————————————————————–
    ‘ Close connections
    On Error Resume Next
    rs.Close
    Set rs = Nothing
    conn.Close
    Set conn = Nothing
    On Error GoTo 0
    End Sub

    Estos datos tienen tal cual indica en los comentarios descargue e instale la version del conector ODBC, agreque la referencia Activex finalmente al compilar no me da ningun error, pero tampoco extrae ningun dato de la tabla que se llama mediante SELECT, ya consulte a varios foros en ninguno de ellos pude conseguir una respuesta de por que no me extrae los datos, ojala ustedes puedan ayudarme, por que hasta ahora no tuve mucha suerte.

    Estoy usando Excel 2010, la version de Mysql es la 5.7, el dato que se debe sacar de tabla1 es un valor numerico.

    Agradezco mucho su gentil atencion.

    Saludos cordiales.

    viernes, 28 de octubre de 2016 13:58