Ocultar campos combinados o textbox en informes si no tienen información

Y excelente día para todos.

Mi pregunta como dice el título. Tengo varios campos en un formulario. Pero hay campos que según el tipo de vehículo se quedan vacíos.

Por lo lógica en el informes esos campos que no tienen información salen vacíos.

Pero lo que quiero es que esos campos que no tienen información y que salen vacíos también me oculten el título de ese campo. Y que solo se muestre en el informe con si tu titulo si dicho campo tiene información.

1 respuesta

Respuesta
1

Si son pocos los campos que pueden ser nulos casi te compensa hacerlo para cada uno. Por ejemplo, donde la ciudad es nula no se ve la etiqueta

El código del evento Al dar formato de la sección Detalle es

Private Sub Detalle_Format(Cancel As Integer, FormatCount As Integer)
If IsNull([Ciudad]) Then
Ciudad_Etiqueta.Visible = False
ElseIf Not IsNull([Ciudad]) Then
Ciudad_Etiqueta.Visible = True
End If
End Sub

el punto es que no me refiero a un solo nombre en especifico. por ejemplo en la imagen

entonces tendría que repetir el mismo código en todos los campos con su respectivo nombre, no hay forma de un macro en general para todos... 

Tienes toda la razón, me olvidé de decirte que si eran muchos lo que podían ser nulos te convendría usar For each... Por ejemplo, supongamos que tengo un formulario, no sirve para nada, te lo pongo para que veas que hay campos vacíos.

En el informe que tiene el diseño

Entonces, en el evento Al dar formato de la sección EncabezadoNumfactura 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

De forma que cuando lo abro en vista previa de impresión( te recuerdo que tipoIva, combinado, ImporteIva y TotalFactura son nulos)

Puedes comprobar que no se ven las etiquetas.

Si tuvieras más controles en otras secciones, sólo tendrías que repetir el código en cada sección.

Bien, he pegado el código, tu tienes el ejemplo de los campos en el encabezado, yo lo tengo el detalle, así que he pegado el código tal y cual en esa sección, ya que la imagen que subí antes tiene toda esa info ahí.

Me ha dado este error

Comprueba en las propiedades-Otras-Nombre que las etiquetas se llaman realmente así y segundo, personalmente nunca llamo a los objetos, sean campos, tablas, controles, etc con nombres separados, ya que en código te obliga a tener que encerrarlos entre corchetes o comillas dobles.

Los nombres de las etiquetas, están ( Etiqueta1, Etiqueta2, Etiqueta14, Etiqueta15, etc..) esos nombres no han sido cambiados. Simplemente lo he arrastrado tal y como lo pone Access.

La primera vez que lo veo. Cuando creas un formulario o informe basado en una tabla o consulta a las etiquetas le pone el nombre del control. Por ejemplo

Por eso me extraña la numeración que pones, a menos que las etiquetas sean independientes del control y le hayas puesto tú los nombres, algo que no aconsejo, porque entonces el problema sería que la etiqueta no tendría nada que ver con el control(no estaría asociada a él), sería un control independiente y no podrías decirle que si el control es nulo...

¡Gracias! no se porque a mi no me pone asi _Etiqueta al contrario automáticamente solo me Etiqueta(#) sin el nombre de la etiqueta delante. tuve que cambiar todo eso. en fin muchas gracias....

Creo, no lo sé seguro, que es por el formato de ordenador que usáis. Verás, aquí en Europa, cuando pones un campo fecha automáticamente te lo pone en formato dd/mm/aaaa, pero creo que en América lo pone como mm/dd/aaaa. Lo mismo pasa cuando ponemos un campo como moneda, automáticamente lo pone como euro.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas