¡Vamos a preparar la conexión!
Una vez que hemos visto como instalar el Driver ODBC que nos permitirá comunicarnos con nuestro servidor de Bases de Datos ha llegado el momento de crearnos un módulo en Access que nos permita acceder de forma cómoda a nuestros datos alojados en dicho servidor.
¿Qué conseguiremos con dicho módulo? pues simplemente tenerlo a mano para que, cada vez que necesitemos información del servidor, lo llamemos para que el módulo, que conocerá la dirección del servidor, el usuario y la contraseña, automáticamente nos establezca la conexión con el servidor para, a continuación, pedirle los datos que necesitemos.
Teniendo claro este concepto vamos a abrir el editor de VBA desde nuestro Access y le damos a crear un nuevo módulo:

Y dentro del módulo pegaremos el siguiente código:
Global CnServer As New ADODB.Connection
Function ConexionSQL() As Boolean
Dim NumReg As Long
ConexionSQL = False
'
' comprobamos que lea registros aunque este abierta
'
If CnServer.State = 1 Then
On Error GoTo Errores1
CnServer.Execute "SELECT * FROM TablaCualquiera", NumReg
ConexionSQL = True
Exit Function
End If
SigoConexion:
gl_var = SysCmd(acSysCmdSetStatus, "Recuperando conexión SQL")
'
' nos aseguramos de que esté cerrada
'
On Error Resume Next
CnServer.Close
Set CnServer = Nothing
On Error GoTo 0
'
' y ahora la abrimos
'
On Error GoTo Errores
CnServer.ConnectionString = "Provider=SQLNCLI11.1;Integrated Security=;Persist Security Info=False;User ID=Usuario;Pwd=Contraseña;Initial Catalog=BaseDeDatos;Data Source=direccion.database.windows.net;Initial File Name=;Server SPN="
CnServer.Properties("Current Language") = "spanish"
CnServer.Open
ConexionSQL = True
gl_var = SysCmd(acSysCmdClearStatus)
Exit Function
Errores:
MsgBox "Hay un problema de conexión", vbCritical, TituloMsgbox
Errores1:
On Error GoTo 0
GoTo SigoConexion
End Function
Una vez lo tengamos pulsamos botón de Guardar y listo.
Vamos a intentar explicar lo que hace cada vez que lo llamemos de forma muy sencilla. Cada vez que llamemos al módulo este comprobará primero si ya existe una conexión abierta, para ello intentará leer una de las tablas que hay en el servidor «CnServer.Execute «SELECT * FROM TablaCualquiera», NumReg». Si tiene acceso al servidor, este devolverá los registros de dicha tabla confirmándonos de que la conexión está abierta. Le decimos a la función que la conexión es correcta y salimos.
Como recomendación diré que la tabla que compruebo suele ser la más pequeña y que menos registros contenga del servidor, incluso, si es necesario, tendremos una tabla con un solo registro sólo para esta comprobación. Recuerda que lo que pretendemos es verificar que hay acceso al servidor, y si lo hay, podremos leer cualquier tabla de las disponibles.
¿Y si no tenemos acceso a la tabla? pues significará que nuestra conexión está cerrada y por tanto vamos a proceder a abrirla. Si sigues leyendo el código verás que en las siguientes líneas lo que hacemos es darle los parámetros de la conexión como la dirección del servidor, el usuario, la contraseña y la base de datos a la que queremos acceder, y la abrimos:
CnServer.ConnectionString = "Provider=SQLNCLI11.1;Integrated Security=;Persist Security Info=False;User ID=Usuario;Pwd=Contraseña;Initial Catalog=BaseDeDatos;Data Source=direccion.database.windows.net;Initial File Name=;Server SPN="
CnServer.Properties("Current Language") = "spanish"
CnServer.Open
ConexionSQL = True
Fíjate que en la línea CnServer.ConextionString, dentro de todos los parámetros que tiene sólo tendremos que sustituir los parámetros:
- User ID – Nuestro Usuario de acceso
- Pwd – Nuestro Password
- Initial Catalog – Base de datos a la que conectaremos
- Data Source – Dirección del servidor
Si los parámetros son correctos, y tenemos acceso al servidor, nuestro módulo abrirá la conexión y, con ella abierta, podremos pedirle datos, lo que haremos en el siguiente artículo.
Hola Angel he seguido tu tuto, que me ha parecido muy bueno y facil de entender, hasta aquí, y quería preguntarte sí termina aquí o está completo en algún otro hilo, gracias
De momento se quedó aquí.