¿Como cargar varios TextBox con recordset de una consulta en VBA Access?

A tod@s!

En realidad tengo 8 registros y 7 campos pero facilitar el ejercicio lo hacemos con 2 campos.

Tengo una consulta con 8 registros y dos campos.

Tengo un formulario  (izda) con varios TexBox nombres (a la dcha).

Con un evento quiero cargar automáticamente todos los TexBox .

El registro 1º  un campo en TexBox (Texto200) y el otro en (Texto210)

Sucesivamente hasta llegar a llenar  los 8 TexBox.

He hecho la carga de la primera columna de TexBox (Texto200 al Texto207) pero no se como cargar del (Texto210 al Texto 217)

Dim i As Integer
For i = 200 To 207
For Each Control In Me.Controls
If TypeOf Control Is TextBox Then
If Right(Control.Name, 3) = i Then
Control.Value = mirecordset![PreguntaNumero]
If i = 207 Then GoTo ExitSub
GoTo Salir
End If
End If
Next
Salir:
mirecordset.MoveNext

Next i

Loop
ExitSub:

¿Cómo puedo cargar los siguientes TexBox?

Gracias por vuestra/tu colaboracion.

1 Respuesta

Respuesta
1

Podrías repetir el bucle for Next para los controles 210 a 217 y cargarles los valores del segundo campo del recordset, exactamente igual que cargas el primero, y luego lo repites las veces necesarias para el resto de campos.

Pero ina mejor solución sería que renombrases los controles, por ejemplo los de la primera columna como C1_1, C1_2... los de la segunda C2_1, C2_2... y así. Así solo necesitarías un bucle como éste :

Dim rst As Dao.Recordset 

Dim i as interger

Set rst=CurrentDb.OpenRecordset ("tuconsulta")

i=1

Rst.movefirst 

Do until rst.eof 

Me.controls("C1_" & i)=rst("Preguntanumero")

Me.controls("C2_" & i)=rst("Question")

....'aqui irían el resto de columnas/campos

i=i+1

Rst.movenext

Loop

A ver si te sirve o hay que "afinarlo"

¡Gracias!

Siguiendo tu consejo lo he solucionado así.

*Empezando del Texto 200 haciendo búsqueda en todo el formulario.

Me.Controls("Texto" & (i + 10)) = mirecordset![PreguntaNumero]I
Me.Controls("Texto" & (i + 20)) = mirecordset![Nombre del Interlocutor]
Me.Controls("Texto" & (i + 30)) = mirecordset![Fecha]
Así hasta añadir todos los controles que necesito.

Gracias... estaba atascado en ello.

Un saludo... gracias.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas