Recorrer form y comparar con tabla o consulta

Sigo sin conseguir que el textbox me cambie de color según si la parcela está libre o no.

He probado de varias maneras y no me dan error, pero tampoco me hacen nada..

Os pongo algunos de los intentos que he hecho, pensaba que sería lo más fácil del programa y es lo que más me está costando.

¿Dónde está el fallo? ¿Tenéis una manera mejor para hacerlo?

Gracias anticipadas. Un saludo.

‘Primer intento abrir tabla y recorrer todos los elementos comparando

Private Sub Form_Load()

Dim rst As New ADODB.Recordset

Dim parcela As Access.Control              

Rst. Open "Parcelas", CurrentProject. Connection, adOpenKeyset, adLockOptimistic ‘abre la tabla

For Each parcela In Me.Controls ‘para cada control del formulario

    If TypeOf parcela Is TextBox Then ‘si el control es de tipo textbox      

            If rst![NumeroParcela] = parcela And rst![Ocupada] = False Then ‘si coincide el nº y que no está ocupada

                parcela.BackColor = RGB(0, 155, 100)

                parcela.GridlineColor = RGB(0, 255, 0)

            End If       

     End If    

Next  parcela ‘sigue con el siguiente control

rst.Close ‘cierra la tabla

Set rst = Nothing  ‘libera memoria 

End Sub 

3 Respuestas

Respuesta
1

Personalmente sigo creyendo que te complicas la vida. Yo tengo el office 16 pero da igual. Si quieres, repito, si quieres, mándame una copia vacía de la(s) tabla(s) origen de la consulta, o con un par de registros inventados, la consulta donde debe buscar los valores y el formulario, le echo un vistazo y te digo lo que puede ser. Mi correo es [email protected]. Si lo haces, en el asunto del mensaje pon tu alias Guady, ya que si no sé quien me escribe ni los abro.

Respuesta
1

Guadi: Ya que ésta pregunta me sale sugerida y la verdad es que no acabo de entender lo que pretendes y donde, te comento mi opinión, que coincide con lo que te cita Icue.

Si lo que quieres es cambiar el "Formato" para visualizar un color u otro de modo condicional, justo Access tiene el Formato Condicional.

Y si es en un Formulario continuo tendrás que escribir una biblia de Código para hacerlo.

Imaginando que lo que buscas es eso, mira si quieres éste ejemplo que tengo en Mediafire para ver si te ayuda.

http://www.mediafire.com/file/jgnrwz61je6e9k5/FormatoCondicionalConCheck.rar 

Mis saludos >> Jacinto

¡Gracias! 

También lo he intentado con el formato condicional, y me funciona, pero cuando hago click en el cuadro de texto y necesito que se vea al momento de abrir el formulario.

Gracias por las molestias.

Un saludo.

Guadi: Si te ocurre así, quizá es que has puesto el formato al recibir el Foco o algo parecido.

Te adjunto una imagen con la operativa.

Como complemento, te puedo decir que la solución que te da Sveinbjor, de la cual me he bajado el ejemplo, a mí me funciona perfectamente. Un saludo a ambos >> Jacinto

Muchísimas gracias!!!!

Un saludo.

Hola!

Sigue sin funcionarme. Y no sé cómo poner el formato condicional en el evento, pensaba que se ponía directamente en el diseño...

he probado poniendo las siguientes condiciones:

El valor del campo es igual a cmbParcelasLibre.Column(0)

1-La expresión es [Parcelas.NumeroParcela] Y [Ocupada] = Falso

2-La expresión es [Ocupada] = Falso

Pero solo me funciona la primera y si escojo el elemento del combo.

No sé como ponerlo en un evento.

Gracias por tu ejemplo.

Un saludo

Guadi: La verdad es que ignoro la causa de que no te funcione, porque ignoro la construcción que tienes en la Tabla y su Formulario asociado. Si es similar al ejemplo de Sveinbjorn, no deberías tener problemas. Si necesitas algo más deberías comentarme, si es que te da error, si es que no te hace nada, una imagen de la tabla, con algún dato inventado y una Imagen del formulario en vista de diseño, para evitar que salgan datos. Mis saludos >> Jacinto

Hola!! A ver si te sirve esto para hacerte a la idea...

No me hace nada.

Gracias anticipadas. Un saludo.

Guadi: De acuerdo a lo que me envías parece que Sveinbjorn te haya leido el pensamiento, porque es exactamente a su ejemplo. Salvo comentarte de nuevo que el ejemplo funciona y te adjunto una imagen. Algo diferente debes de tener y dado que quien más se aproxima al diseño que tu tienes es Sveinbjorn, mi sugerencia es que sigas repasando su solución.

Mis saludos >> Jacinto

¡Gracias!

Eso es lo que quiero que me haga, pero en mi base salen todos en blanco...

Lo seguiré intentando.

Muchas gracias por todas las molestias.

Un saludo.

Guadi: Ahora he visto tu mensaje y he repasado el historial de la pregunta por si algo adelantabas y me he encontrado con la agradable sorpresa de que has resuelto el problema.

La constancia y el tesón siempre tienen recompensa. Mis saludos >> Jacinto

Respuesta
1

Te estás complicando la vida inncesariamente, y como veo que con las respuestas de Icue y Jacinto no lo consigues, te he preparado este mini-ejemplo que hace lo que buscas con 5 líneas de código. Solo tendrás que adaptarlo a lo que tengas hecho.

Un saludo.


¡Gracias! 

Intentaré hacerlo en mi base.

En el ejemplo que me has pasado no veo que haga lo que necesito, que es que se vea en cuanto se abra el form, sin necesidad de escoger de combo.

Te diré si me funciona.

Muchas gracias por las molestias de preparar el ejemplo. Te lo agradezco.

Un saludo.

Si lo hace, está programado en el evento "al cargar" del formulario, y a menos que tengas bloqueada la ejecución de código, sí colorea los cuadros de texto. (Lo comprobé antes de enviarlo)

Es más si borras el cuadro combinado funciona exactamente igual, pues lo sin tener en cuenta ese combo, sino directamente los de la tabla

Pues a lo mejor tengo algo bloqueado sin saberlo...con tu base no me funciona y si se ve al abrirlo es lo que necesito..

Mañana  lo pruebo.

Muchas gracias por todas las molestias.

Un saludo.

¿Probaste otra vez? ¿Conseguiste hacerlo?

Hola!!

No me hace nada. Como sé si tengo el código bloqueado? Puede ser por la diferencia de versiones?

Me he importado tu formulario a mi base y he corregido los nombres de los campos, pero sigue sin hacerme nada, ni en la base que me mandaste ni en la mía.

He probado también con formato condicional como me ha dicho Jacinto y tampoco lo consigo...

Un saludo.

¿Qué versión de access tienes? Yo la probé en un 2013 y en un 2010 y funciona en ambas. Mañana si quieres la pruebo en un 2007 y te digo... Pero no creo que sea problema de versiones... Jacinto dice que la probó y también le funciona...

Para saber si el código se ejecuta o no es fácil, mira si te sale un aviso de seguridad en amarillo debajo del ribbon que te lo indica (y te da la posibilidad de ejecutarlo) o vete a las opciones de access y crea una ubicación de confianza en la carpeta donde tengas la BD.

Si no sabes de qué te hablo (ubicación de confianza y aviso de vista protegida) mira este enlace: https://support.office.com/es-es/article/Agregar-quitar-o-cambiar-una-ubicaci%C3%B3n-de-confianza-para-sus-archivos-7ee1cdc2-483e-4cbb-bcb3-4e7c67147fb4

¡Gracias!

Crearé lo de la ubicación segura a ver si así funciona...

Tengo 2007 y no me sale ningún mensaje.

En mi base todos los cuadros se quedan en blanco.

Ya te comentaré si consigo que me funcione. 

Un saludo y gracias por todas las molestias.

Muchísimas gracias!!

He creado una base nueva a importado todo a ella y ya me funciona!!

Por fin!!

Te agradezco todas las molestias!

Que suerte que haya gente como tú, Jacinto e Icue para ayudarnos.

Un saludo!!

Ya me parecía raro que no te funcionase... No sé que pudo haber pasado. Pero me alegra oír que conseguiste hacerlo funcionar.

No te olvides de valorarme.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas