Ayuda con Código Vba

Tengo este código que utilizo para marcar o desmarcar automáticamente una casilla de verificación al rellenar un cuadro de texto
Private Sub fPagada_AfterUpdate()
If Len(Nz(Form!fPagada.Value)) = 0 Then
Forms![00GESTION DE COMPRA]!tPeticion.Value = True
Else
Forms![00GESTION DE COMPRA]!tPeticion.Value = False
End If
End Sub
Lo que quiero es hacer algo parecido pero para los valores de un cuadro combinado.
Me explico, el cuadro de texto fPagada, meto una fecha en él, automáticamente el boxPeticion pasa del Valor "NO" al Valor "SI"
Por favor, si se puede hacer, dime como hacerlo, ya que yo he intentado adaptar el código que te he mostrado y no he conseguido nada.
2

2 respuestas

Respuesta
1
No veo que debas tener problemas por cambiar de tipo de entrada de datos. Sólo dos observaciones:
En la línea If(Len(Nz(Forms! FPagada... te falta la letra s
Para los combobox el evento para activar el código debería ser "Al cambiar" o "Al perder enfoque", como prefieras. De resto debe servirte el mismo código.
Hola, Gracias por tu pronta respuesta.
Es cierto que me funciona el mismo código con el combobox, pero el valor que me presenta no es el deseado (SI o NO), sino que me presenta los valores menos uno o cero (-1 o 0) y eso no es lo que yo quiero, yo quiero SI o NO, ademas me es indiferente que sea, el que presente el valor, un cuadro de texto, combinado o de lista, ya que no será modificable, su función es solo la de informar de una situación concreta, nadie podrá seleccionar o escribir en el.
En cuanto a la linea de comando que me dices falta una "S", decirte que sin ella me funciona perfectamente. Probaré de todos modos a ponérsela a ver que ocurre.
Un Saludo y Gracias.
Disculpa no había entendido tu pregunta. Entendí que el código no funcionaba en absoluto.
En programación los valores true, false, Si, no, 0,-1, activado, desactivado, son equivalentes. Si son valores que almacenas en una tabla, el valor que guarden dependerá del formato que le asignes al campo en el diseño de la tabla.
Como te digo, si sólo lo utilizas como parámetro de verificación para un código de programación da igual como lo leas, la interpretación será la misma.
Sigo sin entender una cosa. ¿La casilla de verificación es la predeterminada de Access o es una simulación que has hecho tú con un cuadro de texto?.
Si es la predeterminada de access, el valor que muestra es activa o inactiva, true or false. Si lo quieres representar en un cuadro texto creado por ti que se llama tPeticion, entonces lo único que tienes que hacer es sustituir en el código de arriba el valor True por "SI", y el false por "NO", incluidas las comilllas.
Hola de nuevo, gracias por la aclaración en cuanto a los valores que me has hecho en tu respuesta, en cuanto al código, he probado ha poner el código como me has dicho y he sustituido el true por "SI" y false por "NO" incluidas las comillas, pero el resultado sigue sin ser el deseado, ya que al ejecutar el código, en el cuadro de texto no aparece (SI o NO), aparece en su lugar la palabra Verdadero o falso
Un Saludo
Ya vamos avanzando. Deduzco que la casilla de verificación es realmente un cuadro de texto creado por ti y asociado a un campo de una tabala. Una pregunta, ¿Ese cuadro de texto está asociado con un campo booleano de una tabla?. Si es afirmativo, revisa en la propia tabla el formato del campo.
Si no resuleves nada así, te sugiero que elimines ese cuadro de texto y generes otro nuevo, al que puedes poner el mismo nombre.
Muchas Gracias por tu ayuda. Pero ya lo solucioné añadiendo a la tabla un campo numérico Id y utilizando el mismo código. Un Saludo
Respuesta
1
Te recomiendo que cuando utilices un formulario que está relacionado con una tabla o consulta (es decir, que los controles que aparecen no son independientes), cuando tengas que darles un valor, utilices la fórmula:
Forms![Nombre del formulario]. [Nombre del campo] = Lo que sea
En vez del signo de exclamación. Con el punto, haces referencia al campo (cuyo nombre conoces), y con la exclamación haces referencia al nombre DEL CONTROL (que como sabes, al ir insertando puede llamarse TextBox1, TextBox2, etc...) y que tienes que estar pendiente de consultar, por lo que a veces se te puede olvidar. En tu caso, es posible que estés poniendo el valor del campo del cuadro combinado, en vez de su nombre (que será algo así como ComboBox23, por ejemplo) y por eso no lo localiza.
En resumen, para hacer lo que pretendes, yo haría algo así:
If Len(Nz(Me.Nombre)) = 0 Then
    Me.tPeticion = True
    Me.NombreDelCampoDelCuadroCombinado = valor1
    ...
Else
    Me.tPeticion = False
    Me.NombreDelCampoDelCuadroCombinado = valor2
    ...
End If
Cierra la pregunta, para que otros puedan preguntar.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas