Martha su pregunta corresponde a la forma de trabajar con Access como Front End y un servidor de datos, por ejemplo, SQL Server, Oracle, MySQL, DBMaria y PostgreSQL como Back End. Personalmente utilizo PostgreSQL. Le preparé el siguiente ejemplo.
Nota: Asumo que ya sabe hacer la conexión con el servidor, en este ejemplo utilizo un DSN.
FORMULARIO
El formulario consta de 1 cuadro combinado, 1 cuadro de lista, 5 cuadros de texto para mostrar los datos del empleado, más 4 botones para desplazamiento entre registros.
Ahora, elijo un empleado del cuadro combinado.
Elijo a MARTHA TORRES y obtengo en los 4 campos de texto.
Ahora hago clic sobre el cuadro de lista en el empleado CARLOS MARTINEZ y obtengo.
EVENTOS DEL FORMULARIO
EVENTO AL CARGAR EL FORMULARIO
Private Sub Form_Load()
On Error GoTo ErrorHandler
Dim strSQL As String
strSQL = "SELECT tblempleados.* FROM tblempleados ORDER BY empleado"
Set Me.Recordset = recorset_desc(strSQL)
Me.Caption = Space(20)
Call carga_buscar
Call carga_lista
Call bloqueo
ExitProcedure:
Err.Clear
Exit Sub
ErrorHandler:
Select Case Err.Number
Case 0
Case Else
MsgBox "Error " & Err.Number & " (" & Err.Description & ") en procedimiento " & "Form_Open" & " " & Application.VBE.ActiveCodePane.CodeModule.Name
Resume ExitProcedure
End Select
End Sub
LLamo los eventos carga_buscar; llena la información del cuadro combinado, carga_lista; llena la información del cuadro combinado. por último, el procedimiento bloqueo para bloquear los campos de texto, aunque el recordset NO es editable.
EVENTO CARGA_BUSCAR
Sub carga_buscar()
On Error GoTo ErrorHandler
Set Me.cboBuscar.Recordset = recorset_desc("SELECT tblempleados.idempleado,tblempleados.empleado FROM tblempleados ORDER BY empleado")
Me.Caption = Space(20)
ExitProcedure:
Err.Clear
Exit Sub
ErrorHandler:
Select Case Err.Number
Case 0
Case Else
MsgBox "Error " & Err.Number & " (" & Err.Description & ") en procedimiento " & "Form_Open" & " " & Application.VBE.ActiveCodePane.CodeModule.Name
Resume ExitProcedure
End Select
End Sub
EVENTO CARGA_LISTA
Sub carga_lista()
On Error GoTo ErrorHandler
Set Me.lstEmpleados.Recordset = recorset_desc("Select * from tblempleados")
Me.Caption = Space(20)
ExitProcedure:
Err.Clear
Exit Sub
ErrorHandler:
Select Case Err.Number
Case 0
Case Else
MsgBox "Error " & Err.Number & " (" & Err.Description & ") en procedimiento " & "Form_Open" & " " & Application.VBE.ActiveCodePane.CodeModule.Name
Resume ExitProcedure
End Select
End Sub
EVENTO BLOQUEO
Sub bloqueo()
Dim ctrl As Control
For Each ctrl In Me.Controls
If ctrl.ControlType = acTextBox Then
ctrl.Locked = True
End If
Next
End Sub
Si observa los 3 primeros eventos utilizan la función recordset_desc(), tiene como fin crear el recordset desconectado.
FUNCIÓN RECORSET_DESC()
Public Function recorset_desc(sql As String) As ADODB.Recordset
' Función para obtener un recordset ADO desconectado
' en este caso retorna el select pasado en el parámetro sql
' Sirve como origen de datos para formulario, cuadro combinado y cuadro de lista
Dim strSQL As String
Dim rs As ADODB.Recordset
'Valido la conexión con el servidor
If ConexionSQL = False Then
Call MsgBox("Se ha perdido la conexión con el servidor.", vbExclamation, "Atención")
Exit Function
End If
strSQL = sql
'Crear e iniciar el recordset
Set rs = New ADODB.Recordset
rs.ActiveConnection = CnRemota
rs.CursorLocation = adUseClient
rs.CursorType = adOpenForwardOnly
rs.LockType = adLockReadOnly
rs.Open strSQL
'Desconectando
Set rs.ActiveConnection = Nothing
'Devolver el recordset
Set recorset_desc = rs
'Quito la referencia a la variable objeto
Set rs = Nothing
End Function
La función recibe como parámetro la consulta SQL, puede ser una tabla o un JOIN. Observe que esta función llama la función ConexionSQL(), permite verificar que este correcta la conexión con el servidor. Como esta función no es de mi autoría no la incluyo. Sobra mencionar que la Connection se define como Pública.
Me cuenta si le interesa el ejemplo, ya tiene mi correo.