Hacer que una etiqueta de título se muestre en función de si un subformulario tiene o no registros

En un informe que consta entre otras cosas de un subformulario tengo una simple etiqueta de texto que es el título de dicho subformulario y que aparece siempre, tenga o no registros dicho subformulario.

Pues bien, me gustaría saber si se puede hacer que esa etiqueta de título no aparezca cuando el subformulario al que da título no aparece porque no tiene registros (ya que a ese subformulario le he puesto la propiedad "Autocomprimible": Sí)

3 respuestas

Respuesta
1

Prueba con este código, adaptándlo a los nombres que tu tengas, en el evento "Al activar registro" de tu formulario:

Private Sub Form_Current()

Dim rst as DAO recordset

Set rst=Me.NombreSubformulario,Form.RecordsetClone

If rst.Recordcount=0 Then

Me.NombreEtiqueta.Visible=False

Else

Me.NombreEtiqueta.Visible=True

End If

rst.Close

Set rst=Nothing

End Sub

Un saludo


Visítanos: http://nksvaccessolutions.com/Foro 

Perdón, que me he confundido: el código lo has de poner en el evento "Al dar formato" de la sección detalle de tu informe.

Disculpa.

Gracias por tu respuesta... he recibido otras y  más o menos me dicen lo mismo que tú, pero pese a ello no he sabido hacerlo. Ya sé que no es fácil responder sobre algo que no se ve, pero también hay que tener en cuenta mis nulos conocimientos sobre el tema.

De todas formas te agradezco de nuevo tu respuesta y esta noche intentaré hacerlo otra vez con más calma.

Un saludo

Veo que icue ya te ha respondido cómo tienes que hacer para generar el código.

Respuesta
1

Supongamos que el Informe se llama Almacén, con los campos Idalmacen, nombre, etc. Y que el Subinforme se llama Productos con Idalmacen, IdProducto, TipoProducto, etc., relacionados por IdAlmacen . En el diseño del informe haz clic sobre la sección donde esté el Subinforme (quizá Detalle) y en sus Propiedades-eventos-Al dar formato, crea un procedimiento de evento y entre Private Sub y End Sub escribe

If DCount("nz([tipoproducto])", "productos", "idalmacen=reports!almacen!idalmacen") > 0 Then
Prod.Visible = True
ElseIf DCount("nz([tipoproducto])", "productos", "idalmacen=reports!almacen!idalmacen") = 0 Then
Prod.Visible = False
End If

La etiqueta del subformulario la he llamado Prod

Le estoy diciendo que cuente los registros Tipo de producto, en la tabla Productos que tengan el mismo idalmacen que el informe, y que si es >0 entonces se vea y que si es =0 que no se vea. Espero que te sirva. De todas formas cualquier cosa me lo dices.

Gracias por tu respuesta... he recibido otras y  más o menos me dicen lo mismo que tú, pero pese a ello no he sabido hacerlo. Ya sé que no es fácil responder sobre algo que no se ve, pero también hay que tener en cuenta mis nulos conocimientos sobre el tema.

De todas formas te agradezco de nuevo tu respuesta y esta noche intentaré hacerlo otra vez con más calma.

Un saludo

En Diseño del informe haz clic en la barra donde pone Detalle, se pondrá negra

Con el cursor en la barra negra dale al botón de la derecha del ratón y pulsa Propiedades

Donde pone Proc... haz clic con el botón derecho del ratón y te aparecen un botón con una flecha para abajo y un botón con tres puntos ... Si pulsas este último elige Generador de código-Aceptar y se abre el editor de VB. Ahí es donde tienes que escribir lo que te mandé.

Respuesta
1

Tjure: Supongo que el Sub Formulario lo tienes en el Detalle del Informe.

En el Evento al dar formato del mismo, cuenta los registros de la Fuente de datos del Sub Formulario, más o menos así.

If Nz(DCount("[UnCampo]","TablaOConsulta"),0) = 0 Then

Me.NombreEtiqueta.Visible = False

Else

Me.NombreEtiqueta.Visible = True

End If

No lo he probado, o sea que ya me contarás. Saludos >> Jacinto

Añade tu respuesta

Haz clic para o
El autor de la pregunta ya no la sigue por lo que es posible que no reciba tu respuesta.

Más respuestas relacionadas