Mostrar campo si el valor corresponde con alguno de los registros del formulario continuo

Tengo un formulario continuo, al que, cuando entre, le quiero indicar que si en alguno de los registros del mismo aparece un valor, me muestre u oculte un campo.

Es decir, tengo este formulario:

Quiero que me muestre unas columnas visibles a la derecha en función del estado (que tampoco aparece, ni hace falta). Sin embargo, ese estado puede variar para cada registro. En unos puede ser Leído, en otros Pendiente...

Ahora mismo lo tengo así:

Public Sub ActualizarSegunEstado1(FName As Form)
    Select Case FName.Estado1
        Case "Borrado", "Pendiente", "Comprar", "Descatalogado"
            Application.Echo (False)
            FName.Duracion.Visible = False
            FName.PaginasDia.Visible = False
            FName.LineasDia.Visible = False
            FName.Variacion.Visible = False
            FName.VariacionLineas.Visible = False
            FName.EtiDuracion.Visible = False
            FName.EtiPaginasDia.Visible = False
            FName.EtiVariacion.Visible = False
            FName.EtiFechas.Visible = False
            FName.FechaInicio.Visible = False
            FName.FechaFinal.Visible = False
            FName.EtiValoracion.Visible = False
            FName.Valoracion.Visible = False
            FName.Requery
            Application.Echo (True)
        Case "Leído"
            Application.Echo (False)
            FName.Duracion.Visible = True
            FName.PaginasDia.Visible = True
            FName.LineasDia.Visible = True
            FName.Variacion.Visible = True
            FName.VariacionLineas.Visible = True
            FName.EtiDuracion.Visible = True
            FName.EtiPaginasDia.Visible = True
            FName.EtiVariacion.Visible = True
            FName.EtiFechas.Visible = True
            FName.FechaInicio.Visible = True
            FName.FechaFinal.Visible = True
            FName.EtiValoracion.Visible = True
            FName.Valoracion.Visible = True
            FName.Requery
            Application.Echo (True)
        Case "Leyendo"
            FName.Duracion.Visible = True
            FName.PaginasDia.Visible = True
            FName.LineasDia.Visible = True
            FName.Variacion.Visible = True
            FName.VariacionLineas.Visible = True
            FName.EtiDuracion.Visible = True
            FName.EtiPaginasDia.Visible = True
            FName.EtiVariacion.Visible = True
            FName.EtiFechas.Visible = True
            FName.FechaInicio.Visible = True
            FName.FechaFinal.Visible = False
            FName.EtiValoracion.Visible = False
            FName.Valoracion.Visible = False
            FName.Requery
            Application.Echo (True)
    End Select
End Sub

Pero eso solo me comprueba el registro activo. Yo lo que quiero es que me recorra todos los registros, y que actúe en consecuencia.

¿Cómo puedo lograrlo?

Respuesta
2

Si no interpreto mal lo que quieres, lamento decirte que no vas a conseguir lo que pretendes vía VBA, porque en un formulario continuo, aunque tu veas muchas veces un control, solo existe una vez, con lo que cualquier modificación que le hagas (mostrarlo, ocultarlo, cambiarle el color, los bordes...) se reflejará en todos los registros.

Lo único que puedes hacer es aplicar un formato condicional al control, ahí si que te mostrará distintos formatos en función de la expresión que hayas definido. Por ejemplo, podrías colorear el fondo de un campo con distintos colores en función del valor de ese u otro campo. Pero no puedes mostrarlo u ocultarlo en un formulario continuo.

Otra posibilidad que tienes es usar un formulario con un subinforme para mostrar los resultados de tu búsqueda. Como en los informes puedes programar el evento "al dar formato" para que te muestre/oculte un control en cada registro, obtendrás el resultado visual que esperas, pero por otro lado, no podrás hacer nada con esos resultados, solo verlos en pantalla...

La pregunta no admite más respuestas

Más respuestas relacionadas