Ocultar controles en Informe, según valor de campo

Necesito saber si es posible ocultar campos en un informe en función del valor de un campo de la tabla origen, y en su caso, ¿qué código necesitaría poner y en que evento?

Respuesta
2

Jose María, puedes hacerlo de muchas formas, todo depende de lo que quieras hacer, puedes hacerlo en el evento Al dar formato o usando el formato condicional. Por ejemplo, vamos a suponer que si en un cuadro de texto Cobro, cuando su valor sea "sin pagar" no quieres que se vea nada escrito en alguno de los controles, en vista diseño del informe, seleccionas el cuadro de texto que sea, pulsas Formato condicional-nueva regla-La expresión es [control]="sin pagar" y seleccionas como color de texto blanco, igual que el fondo.

La idea es que si el campo [Edad] < 18, los controles "Tutor" y "TelfTutor" no aparezcan en el informe.

Así como las etiquetas. Yol o he intentando con un If en el evento al Activar, pero por lo visto, eso no funciona igual que con los formularios

En ese caso basta con usar el evento al dar formato. Supongamos que tengo la tabla Empleados

Puedes ver que María es menor de edad. Si con esa tabla construyo un informe( no te importe que se vean los tres, ya que lo pongo para que puedas comparar como en unos no se muestra y en otros sí)

A María no le aparece tutor ni teléfono. En el evento Al dar formato de la sección donde estén los cuadros de texto, en este caso están en la sección Detalle, le pongo

Private Sub Detalle_Format(Cancel As Integer, FormatCount As Integer)
If Edad < 18 Then
Tutor.Visible = False
TelTutor.Visible = False
Else
Tutor.Visible = True
TelTutor.Visible = True
End If
End Sub

es decir, no necesitas hacer referencia a las etiquetas, siempre y cuando hayan sido creadas a la vez que se crea el cuadro de texto.

¡Gracias! Eso era lo que necesito saber

 Reitero mi agradecimiento

Te decía que puedes hacerlo de muchas formas. En este caso sólo son dos cuadros de texto, pero si fueran muchos los que quisieras ocultar si su valor fuera nulo, mira el diseño de un informe

En este caso TipoIva es nulo, por tanto ImporteIva también es nulo, pero podría ser cualquier otro. Al abrirlo

En este caso, en el evento al dar formato de la sección Encabezado Numfactura le pongo

Private Sub EncabezadoDelGrupo0_Format(Cancel As Integer, FormatCount As Integer)
For Each Control In Report.Controls
If Control.ControlType = acTextBox Or Control.ControlType = acComboBox Then
If IsNull([Control]) Then
Me.Controls(Control.Name & "_etiqueta").Visible = False
ElseIf Not IsNull([Control]) Then
Me.Controls(Control.Name & "_etiqueta").Visible = True
End If
End If
Next
End Sub

y así me "cubre" a todos los objetos, sin tener que ir "definiendo" uno a uno.

1 respuesta más de otro experto

Respuesta
1

Si coloca una imagen nos daría mejor ilustración. Y de hacarce se puede en el evento al dar formato, de acuerdo con el valor de la tabla.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas