Intentar de controles en informe mediante código

Tengo un formulario con varias casillas de verificación, que de acuerdo a si están tildadas, aparecen al abrir el informe o no. El problema es que son varias casillas con sus etiquetas y al haber selecciones quedan los espacios en blanco (ocultas) las que no estaban activadas al momento de generarse el informe. La pregunta seria como podría mediante un código, decirle al informe que al cargarse inserte las casillas con sus etiquetas en posiciones continuas, o sea una abajo de la otra. ¿Se entiende?

2 respuestas

Respuesta
1

Voy a tratar de ser lo más sencillo posible y no meter mucho código. Vamos a suponer que tengo un formulario Ejemplo, basado en la tabla del mismo nombre donde a cada cliente le voy a señalar algunas casillas.

Si pulso el botón del registro de Pepe

Si hubiera pulsado el botón del registro de Carlos

Para ello, con la tabla Ejemplo creo una consulta de unión como la de la imagen

De forma que sólo me "saque" aquellos registros que estén marcados

Y con ella construyo un informe como

Donde le añado una casilla de verificación a la que en su origen del control le pongo=-1 y oculto el control CampoA.

El código del evento Al hacer clic del botón es

Private Sub Comando19_Click()
DoCmd.OpenReport "consulta1", acPreview, , "cliente='" & Me.Cliente & "'"
End Sub

De todas formas, si ves que parece complicado y quieres, repito, si quieres, mándame un mensaje(sólo el mensaje) a [email protected] y te mando el ejemplo.

Si lo haces, en el asunto del mensaje pon tu alias Marcelo Milanga, ya que si no sé quien me escribe ni los abro.

¡Gracias! pero no me queda claro...si me puedes mandar el ejemplo a mi mail [email protected]

Enviado ejemplo por Email

Respuesta

Aunque la respuesta que le dan es suficiente lo hago concatenando los campos, especialmente cuando hago etiquetas, para no dejar espacios en blanco.

TABLA

DISEÑO DEL REPORTE

CÓDIGO EN LA SECCIÓN DE DETALLE EVENTO AL DAR FORMATO

Private Sub Detalle_Format(Cancel As Integer, FormatCount As Integer)
 Me.txtaux = crearlinea("CODIGO_A", [CODIGO_A]) & _
 crearlinea("CODIGO_B", [CODIGO_B]) & _
 crearlinea("CODIGO_C", [CODIGO_C]) & _
 crearlinea("CODIGO_D", [CODIGO_D]) & _
 crearlinea("CODIGO_E", [CODIGO_E]) & _
 crearlinea("CODIGO_F", [CODIGO_F])
End Sub

Utilizo una función para controlar los retornos cuando no hay datos.

CÓDIGO DE LA FUNCIÓN

Public Function crearlinea(strcampo As String, varValue As Variant) As Variant
   If IsNull(varValue) Or varValue = 0 Then
      crearlinea = Null
   Else
      crearlinea = strcampo & " " & "[v]" & vbCrLf
   End If
End Function

RESULTADO DEL INFORME

La ventaja de este sistema es que puede incluir cualquier tipo de dato en la concatenación, solo es hacer un pequeño ajuste en la función.

Si quiere el ejemplo lo puede solicitar a [email protected], favor el el asunto anotar la consulta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas