Recorrer 60 textbox de un form. Y comparar con una consulta para darle formato, for each control in controls me da error 429

Necesito que al cargar el formulario se ejecute una consulta y si el valor del textbox coincide con un valor en la consulta darle un aspecto u otro. Son 60 textbox a los que les tengo que cambiar el color del borde según si en la consulta aparece true o false.

Tengo una consulta que me dice si la parcela está ocupada o no, y quiero que si el número de la parcela que está libre coincide con el valor del textbox, este tenga el borde verde, para que el usuario de un vistazo pueda ver qué parcelas son las que están libres.

He intentado hacerlo abriendo la tabla, abriendo una consulta, comparar con la columna(0) de un combobox basado en la consulta, pero el error me sale al intentar recorrer todos los texbox.

He intentado lo de abrir la tabla o consulta en el evento Form_load() y lo del combobox en el evento después de actualizarlo.

Esto es lo que tengo:

Option Compare Database
Option Explicit

Private Sub cmbParcelasLibres_AfterUpdate()
Dim parcelas As New control

For Each parcelas In Controls

        If TypeOf parcelas Is TextBox Then
                     If cmbParcelasLibres.Column(0) = parcelas Then
                          parcelas.GridlineColor = RGB(0, 125, 0)
                    End If
        End If
Next parcelas

End Sub
Private Sub Form_Load()
cmbParcelasLibres.SetFocus

cmbParcelasLibres.Requery
End Sub

Pero no me funciona, me da error 429 ActiveX no puede crear el control, y las soluciones que veo por internet no consigo que funcione. ¿Qué clase necesito tener instalada? ¿Qué librerias?

Si no saliese el error, ¿sería correcto el código?

Me estoy volviendo loca! Es lo último que me falta para entregar el programa.

1 respuesta

Respuesta
2

Me he perdido, para citar varios controles usa

for each control in form.controls

if control.controltype=actextbox and control=....(aquí la comparación) then

control.bordercolor=....

endif

next

¡Gracias! 

Lo intentaré.

Un saludo.

Hola Icue,

Gracias por tu ayuda, no hace lo que quiero, pero al menos ya no me sale el error 429 que no me dejaba hacer nada.

Seguiré buscando otras soluciones, pero al menos puedo usar el For each...Next sin errores de ActiveX. Intentaré probar otros eventos y otras formas de recorrer la tabla o la consulta.

Gracias por haber contestado.

Un saludo.

Hola,

Sí sigue dándome el error 429 ActiveX no puede crear el control.

¿Qué clase o que referencias debo tener instaladas para poder recorrer la colección Controls del formulario?

Gracias anticipadas.

Un saludo.

Es que estás definiendo algo que no es valido

Dim parcela as new control

Eb la instrucción que te puse, ya le estas diciendo que para cada control del formulario si el control es un cuadro de texto y además cumple la condición de que sea igual al valor de la consulta será algo así como

... And control=dlookup("parcela","nombredela consulta","y aquí el criterio que identifique un registro en particular") then

O por ejemplo

...and control="ocupada" then

control.bordercolor=....

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas