Bueno... creo que se esta complicando la vida haciendo un procedimiento de conexion en cada form... le recomiendo que coloque ese procedimiento de conexion en un modulo... algo asi:
modMySQL
Option Explicit
Public conConexion As ADODB.Connection
Public strCadenaConexion As String
'//CONECTAR AL SERVIDOR DE DATOS
Public Sub psConectar()
On Error GoTo Error_Handler:
Set conConexion = New ADODB.Connection
conConexion.ConnectionString = modMySQL.strCadenaConexion
conConexion.Open
Exit Sub
Error_Handler:
Set conConexion = Nothing
MsgBox Err.Description & " (" & Err.Number & ").", vbCritical
End Sub
La variable publica strCadenaConexion la puede cargar de un archivo de texto (o desde el registro) cuando abre el primer form de la aplicacion... asi no va a tener que volver a compilar el proyecto cada vez que se cambie de servidor, usuario, etc.
Bien.. ahora.. con este ejemplo se conecta a la base de datos e inserta... (recuerde que tiene que definir la cadena de conexion en la variable publica strCadenaConexion):
Private Sub psGuardar_Usuario()
Dim rs As ADODB.Recordset
On Error GoTo Error_Handler
Set rs = New ADODB.Recordset
Call modMySQL.psConectar
With rs
.ActiveConnection = modMySQL.conConexion
.CursorLocation = adUseClient
.CursorType = adOpenDynamic
.LockType = adLockOptimistic
.Open "INSERT INTO tabla(campos) VALUES(valores)"
If .State Then .Close
If modMySQL.conConexion.State Then modMySQL.conConexion.Close
End With
Set rs = Nothing
Exit Sub
Error_Handler:
MsgBox Err.Description & " (" & Err.Number & ").", vbCritical
End Sub
La cadena de conexion puede ser algo asi:
modMySQL.strCadenaConexion = "driver={MySQL ODBC 3.51 Driver};server=" & Trim(txtServidor) & ";" _
& "uid=usuario_mysql;pwd=password_mysql;database=base_de_datos;connection="
Donde txtServidor es un TextBox que se coloca en el form de Login... (esto es para lo que le comente anteriormente), que no tenga que estar compilando el proyecto cada vez que cambian el nombre del server, etc.