Mostrar una nota de "VALIDO" si el campo de todos los registros seleccionados es "OK", sino "NO VALIDO"

Necesito resolver el siguiente caso de Access.

Tengo un formulario [Rigging] continuo en el cual, mediante un menu desplegable voy seleccionando diferentes artículos.

Los artículos los voy seleccionando de una consulta.

En el encabezado del formulario tengo un campo de texto [TextoEstado]

En el detalle del formulario tengo los registros que voy seleccionando

Desplegable1= [IdElemRigging]

Texto2= [IdElemRigging].[Column](2)

Texto3= [IdElemRigging].[Column](3)

Texto4= [ESTADO] *Este es un campo calculado que toma algunas fechas de vencimiento. El campo ESTADO me devuelve "OK" o "NO OK"

Hasta ahí no tengo problema, la cuestión es:

Si de todos los registros que selecciono alguno se encuentra en estado: NO OK, que el campo [TextoEstado] me devuelva "NO VALIDO"; en cambio si todos los registros que seleccione se encuentran "OK" en su ESTADO, el [TextoEstado] me devuelva la palabra "VALIDO"

1 Respuesta

Respuesta
1

Pedro: Por tu explicación trabajas con un Formulario coninuo que tiene como Origen de datos una consulta. Una manera de hacerlo, y creo que simple es que añadas el Campo Estado a la consulta y lo muestres en una Columna deel Formulario.

El "letrero" que te muestre lo puedes controlar en la Propia Consulta, con un SiInm >> más o menos así.

TextoEstado: SiInm([Tutabla]![Estado] ="OK";"VALIDO";"NO VALIDO"))

Un saludo >> Jacino

Pedro: En la expresión que te he pueto sobra un Paréntesis. Un saludo >> Jacinto

Muchas gracias Jacinto por la rápida respuesta.

Te comento más precisamente donde tengo el problema.

Caso 1 - Voy seleccionando artículos de forma que el formulario me queda así:

Registro1 - Articulo 23 - OK

Registro2 - Articulo 105 - OK

Registro3 - Articulo 12 - NO OK

*En el encabezado del formulario ([TextoEstado]) quiero tener la leyenda "NO VÁLIDO" ya que uno de los registros NO esta OK.

Caso2:

Registro1 - Articulo 23 - OK

Registro2 - Articulo 78 - NO OK

Registro3 - Articulo 12 - NO OK

*[TextoEstado] = "NO VALIDO" (dos registros NO OK)

Caso3:

Registro1 - Articulo 23 - OK

Registro2 - Articulo 105 - OK

Registro3 - Articulo 4 - OK

*[TextoEstado] = "VALIDO" (Todos los registros cargados estan OK)

O sea, que el [TextoEstado] evalúe los artículos seleccionados y solo me valide cuando todos los registros cargados se encuentren en estado OK.

Ahora tengo un campo de texto que solo toma como referencia el primer registro y me devuelve la validación sin considerar la totalidad de los artículos cargados. (O sea, para los casos 1 y 2 me devuelve un resultado VALIDO)

Te vuelvo a agradecer la paciencia, sobre todo...!

Pedro: Me queda un poco de duda sobre la estructura que usas, pero voy a suponer que ese Formulario continuo no hace de SubFormulario, y en su cabecera es donde está el >> TextoEstado.

Si es así, en cada entrada de Registro en el que supongo ya tienes programado el Evento AfterUpdate para adjudicar>> los valores de Texto2 y Texto3

Después de esas líneas

Dim Rst As DAO.Recordset
Dim CantNOOK As Integer
CantNOOK = 0
Docmd.RunCommand acCmdSaveRecord
Set Rst = Me.RecordsetClone
Rst.MoveLast
Rst.MoveFirst
Do While Not Rst.EOF
     If Rst!Estado = "NO OK" Then
         CantNOOK = CantNOOK +1
     End If
     Rst.MoveNext
Loop
If CantNOOK > 0 then
     Me.TextoEstado = "NO VALIDO"
     Me.TextoEstado.BackColor = RGB(255,0,0) 'Para efecto visual
Else
     Me.TextoEstado = "VALIDO
     Me.TextoEstado.BackColor = RGB(0,255,0) 'Para efecto visual
End IF

Espero te resuelva el problema o de otro modo me comentas. Saludos >> Jacinto

Muchas gracias Jacinto!

Quizás debería haberte comentado que mis conocimientos de Access son muy, muy básicos y me perdí en tu ultima respuesta. (Y me da un poco de vergüenza)

Primero, si, es un formulario y no un subformulario.

Te adjunto un par de imágenes a ver si logro darme a entender mejos sobre la estructura del mismo:

En verde te he anotado el nombre de cada campo. Como veras, el ejemplo con el que comencé la consulta al sitio era una versión resumida del proyecto con el que estoy trabajando.

El campo [O] es una casilla de verificación que me indica si la certificación del articulo vence a los 6 o 12 meses.

Esta estructura del formulario, en definitiva se ve así:

En el campo [ESTADO], en este ejemplo debería decir: "FALTA CUMPLIR REQUISITOS"

Pedro: Observo por tus imágenes que no guardas ningún dato. Eso no es bueno ni malo, pero dificulta el proceso de capturar los valores de los NO HABILITADO. Lo único que se me ocurre es sugerirte que si no tienes datos personales o confidenciales a [email protected]

Si es que tienes ese tipo de datos inventa algunos o aisla los componentes que intervengan en el proceso en una pequeña BD. Tabla, Consulta que me parece citaste, Formulario etc.

No sigo mirando en espera de tu contestación. Un saludo >> Jacinto

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas