Voy a tratar de ser lo más didáctico posible, sin meterte en honduras de código. Vamos a suponer que tengo la tabla Alumnos y un formulario Formulario3 donde tengo un cuadro combinado llamado Elegir donde elegiré a los profesores.
Con esta tabla creo una consulta para "limitar" los alumnos de cada maestro que elija en el combinado Elegir
A su vez con ésta consulta hago otra como en la imagen. Lo que hace es asignarle a cada alumno de ese maestro un orden correlativo.
Vamos ahora al formulario, donde por comodidad mía sólo he puesto 5 cuadros de texto llamados A1, A2,...
Si elijo a uno de ellos, en este caso a Don Miguel
Me deja el formulario como
Si ahora elijo a otro
En este caso en particular, en el evento Después de actualizar del combinado Elegir le he puesto
Private Sub Elegir_AfterUpdate()
Dim i As Byte
Dim lbl As Control
For i = 1 To DCount("*", "consulta2")
Set lbl = Controls("A" & i)
lbl = ""
lbl = DLookup("nombre", "consulta2", "orden=" & i & "")
Next i
A1.SetFocus
End Sub
Es decir, que le asigne a cada control que tenga por nombre A1,A2,....tantos como alumnos haya en la consulta2 el valor que figura en el campo nombre de aquellos registros en que su orden sea igual a i(o sea, 1, 2,...)
También le he puesto en el evento Al recibir el enfoque del combinado
Private Sub Elegir_GotFocus()
For Each Control In Form.Controls
If Control.ControlType = acTextBox Then
Me.Controls(Control.Name) = Null
End If
Next
End Sub
Para que si cambiara de maestro me deje primero los controles en blanco.
De todas formas, si quieres, repito, si quieres, mándame un mensaje(sólo el mensaje) a [email protected] y te mando el ejemplo, que es como se ve mejor.
Si lo haces, en el asunto del mensaje pon tu alias Jes Eo, ya que si no sé quien me escribe ni los abro.