
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:
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:
Doy el tema por cerrado
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


0