Una vez instalado el driver adecuado a nuestro Office 32 ó 64 bits (el que sea 32 ó 64 depende del Office que usemos no del S.O.) procederemos a crear el DSN en nuestra colección de ODBC.
Incluyo imágenes de cómo lo he configurado. Datos principales y pestaña Connection:
y en la pestaña Cursors/Results:
– es aconsejable marcar el valor:
Allow big result sets
– e imprescindible hacerlo con:
Return matched rows instead of affected rows
si no marcamos este último nos aparecerá el error:
Si necesitásemos automatizar la creación del DSN lo podemos hacer mediante VBA. En un módulo independiente:
Option Compare Database
Option Explicit
#If Win64 Then
Private Declare PtrSafe Function SQLConfigDataSource Lib "ODBCCP32.DLL" ( _
ByVal hwndParent As Long, ByVal fRequest As Long, _
ByVal lpszDriver As String, ByVal lpszAttributes As String) As Long
#Else
Private Declare Function SQLConfigDataSource Lib "ODBCCP32.DLL" ( _
ByVal hwndParent As Long, ByVal fRequest As Long, _
ByVal lpszDriver As String, ByVal lpszAttributes As String) As Long
#End If
Function CreaDSN_MySQL8() As Boolean
Dim Driver As String
Dim Attributes As String
Const vbAPINull As Long = 0& ' Puntero NULL
Const ODBC_ADD_DSN = 1 ' Tipo fRequest
Driver = "MySQL ODBC 8.0 ANSI Driver"
Attributes = "192.168.1.125" & Chr$(0) & _
"DESCRIPTION=Esta es la descripcion DSN" & Chr$(0) & _
"DSN=MARCH-TECSYS" & Chr$(0) & _
"DATABASE=cdt_test" & Chr$(0) & _
"PWD=****" & Chr$(0) & _
"UID=JESUS" & Chr$(0) & _
"PORT=3306" & Chr$(0) & _
"BIG_PACKETS=1" & Chr$(0) & _
"FOUND_ROWS=1" & Chr$(0)
CreaDSN_MySQL8 = SQLConfigDataSource(vbAPINull, ODBC_ADD_DSN, Driver, Attributes)
End Function
La descripción de los atributos y valores la podemos encontrar en la siguiente dirección, así como todo lo relativo a MySQL:
Site MySQL
Mis agradecimientos a la comunidad de acceseros de AUGE en general y a Xavi en particular por el código, bueno lo que me pasó era mucho más completo y extenso, yo le he dejado en lo imprescindible.