Access - Formulario continuo con campo condicional

 
Vista:

Formulario continuo con campo condicional

Publicado por Vicente (23 intervenciones) el 12/09/2018 19:40:05
Nuevamente por aquí. Siempre dando la lata.
La cuestión que planteo y que me gustaría me ayudaran es la siguiente:
Tengo un formulario (Búsqueda por autor) con un subformulario vinculado llamado “Subformulario Búsqueda por autor”, en donde se refleja la situación en que se encuentra los libros escritos por el autor introducido. Las situaciones que se pueden dar básicamente son tres, DISPONIBLE (no prestado), NO DISPONIBLE (libro prestado) y una última LIBRO DADO DE BAJA, donde pretendo se recoja los libros que por deterioro, extravío o no devuelto no estén disponibles.
Si hago la consulta (en el formulario) veo que los campos se cumplimentan correctamente, es decir que si el libro está prestado y no devuelto aparece la fecha del préstamo, también si el libro ha sido dado de baja aparece la fecha en la que le he dado de baja, pero ahora surge la cuestión.
Si el primer título que aparece está disponible, toda los libros de ese autor, estén prestados, deteriorados o disponibles, aparecen (todos como disponibles), por el contrario si el primer libro que parece en el subformulario está prestado o extraviado (por abreviar), todos los libros de ese autor aparecen como no disponibles.
Le he dado vueltas a derechas e izquierdas al asunto y sigo sin resolverlo.
Plasmo seguidamente la instrucción que he escrito:

Private Sub Form_ApplyFilter(Cancel As Integer, ApplyType As Integer)

If Not IsNull([Fecha de baja]) Or (Not IsNull([PrestaL]) And IsNull([DevoluciO])) Then
DisponitblE.Value = "NO DISPONIBLE"
DisponitblE.BackColor = vbRed
ElseIf IsNull([Fecha de baja]) And (IsNull([PrestaL]) And IsNull([DevoluciO])) Then
DisponitblE.Value = "DISPONIBLE"
DisponitblE.BackColor = vbGreen
ElseIf IsNull([Fecha de baja]) And Not (IsNull([PrestaL]) And Not IsNull([DevoluciO])) Then
DisponitblE.Value = "DISPONIBLE"
DisponitblE.BackColor = vbGreen

End If

End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Formulario continuo con campo condicional

Publicado por Anonimo (3314 intervenciones) el 12/09/2018 21:50:26
Para presentar con diferentes colores al mismo campo en un formulario continuo, Access dispone del 'Formato condicional'

Una asignación directa se le aplica al campo/registro activo y se expande a todos sus homólogos 'fantasma' (el resto de los registros que no sean 'el activo', el único y real en el formulario).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Formulario continuo con campo condicional

Publicado por vicente (23 intervenciones) el 13/09/2018 17:25:36
Muchas gracias, Anónimo. Funciona perfectamente y no hace falta programar ningún evento.

Como consecuencia de lo anterior, te pregunto, ¿de qué manera puedo hacer que el campo además de coloreado (Formato condicional), aparezca un texto indicativo de la situación. Si se puede hacer me gustaría me indicaras cómo y en qué evento lo debo incorporar.

He programado en diferentes eventos y solamente aparece el texto (situación) si lo hago en el evento abrir (en el subformulario), pero el texto que figura no es coincidente con la situación.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Formulario continuo con campo condicional

Publicado por Anonimo (3314 intervenciones) el 14/09/2018 02:17:56
Las asignaciones que se hacen en los eventos, solo actuaran sobre un registro: el activo

Para que cada registro muestre un supuesto calculo individual registro a registro el calculo se ha de hacer en el origen del objeto pero referenciado a los objetos que le acompañan, con ello (cuando se genere la ilusión óptica, pues eso es el formato condicional) tendrá que seguir si o si a los datos del registro al que este asociado.

Inténtalo con la función IIF en el origen del campo, haciendo referencias a los campos que lo acompañan, un ejemplo sencillo (en el supuesto de que los datos de los campos fueran booleanos):

Prestado = -1 (verdadero) y 0 (falso = disponible) acompañado de Baja = -1 (verdadero, libro retirado) y 0 (falso, esta disponible)

1
= IIF ([Baja] ;"Libro retirado'; IIF ([Prestado] ;"Libro no disponible"; "Libro disponible"))

Analiza si esto te vale y recuerda que los campos booleanos son básicamente un cero y un no-cero (el menos uno es un valor pactado) asi que dos 'True' sumados daría (-2) o que True se puede expresar como diferente de cero :

IF Baja <> 0 Then "Libro disponible' ….
(sin tener en cuenta su posible estado de baja, pero esas combinaciones son dignas de dedicarles unos minutos)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Formulario continuo con campo condicional

Publicado por Vicente (23 intervenciones) el 15/09/2018 11:47:53
Anónimo, he hecho unas cuantas pruebas con la indicación que me hiciste y FUNCIONA PERFECTAMENTE. Muchísimas gracias.
Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar