.
  • Crear DSN
  • .

    ACCESS vs MySQL

    En este apartado dedicado al MySQL (MariaDb) pretendo 'arrejuntar' algunos tips de los charcos que nos encontramos los acceseros al trabajar con MySQL, no pretende ser un estudio exhaustivo de Access vs MySQL.

    En mi caso, estoy convirtiendo actualmente una aplicación que funciona en entorno local Office-2016 64 bits, tanto front-end como back-end, a un entorno Office365-Pro 64 bits el front-end y los datos en un servidor MySql situado en 'la nube'.

    El primer paso es conseguir que la aplicación siga trabajando con la tablas vinculadas a través de un ODBC, para después, en un segundo paso, ir cambiando (poco a poco) los accesos de los formularios / informes / etc mediante objetos Connection y así eliminar las tablas vinculadas y los ODBC creados.

    Las entradas van a ser desordenadas, según me vaya acordando y tenga tiempo y ganas.

    Un saludo.



    Creación del DSN en nuestros ODBC de 32/64 bits      9-may-2020

    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.




    Tecsys Proyectos Informaticos, S.L.