Access - ControlSource "dinamico" VBA

 
Vista:
sin imagen de perfil

ControlSource "dinamico" VBA

Publicado por Vicent (1 intervención) el 22/03/2017 12:05:31
Buenos dias a tod@s.
Programacion en visual basic Acces

Os planteo mi problema, tengo un formulario con una serie de campos de texto (textBox). El nombre de estos campos va desde "f1" a "f20".

Cuando inicio el formuilario me gustaria que a partir de una consulta que hago a las fases de un articulo, segun las fases que tenga fueran asignandose a cada uno de los campos.

Mi problema surge al asignar el controlsource, no se como programar para que se asignen de forma automatica.

Mi codigo es este:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Dim db As Database
    Set db = CurrentDb()
    'Cargar los campos de fase, segun el maximo de fases que peude haber,esto lo sabemos consultando todas las fases posibles, como hacemos para crear la tabla
    Dim rsFases As Recordset
    Dim cltFases As String
    Dim i As Integer
    Dim campo
 
    i = 1
    cltFases = "SELECT af.DESCRIP,af.FASECOMUN " & _
               "FROM [0-ARTICULOS] as art inner join [0-ARTICULO-FASES] as af on art.codigo=af.articulo " & _
               "WHERE (((art.OBSOLETO)=0) AND ((art.CAPITULO)='016' Or (art.CAPITULO)='020')) " & _
                "GROUP BY af.DESCRIP,af.FASECOMUN"
    Set rsFases = db.OpenRecordset(cltFases)
    Do While Not rsFases.EOF
        campo = "f" & i
        campo.ControlSource = rsFases!FASECOMUN
        i = i + 1
        rsFases.MoveNext
    Loop

Como veis lo que quiero es asignar de forma automatica usando un incremental "i":
campo = "f" & i
campo.ControlSource = rsFases!FASECOMUN

Pero esto no es valido y da error.

Alguna idea?


EDITO: (para quien lo necesite)

He encontrado la solución, asignando el control source con otro comando:
1
Controls(campo).ControlSource = rsFases!FASECOMUN


Doy el tema por cerrado
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder