Access - ayuda con control de informe dolor de cabeza

 
Vista:
sin imagen de perfil
Val: 95
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

ayuda con control de informe dolor de cabeza

Publicado por felipezo (45 intervenciones) el 12/04/2019 19:39:22
al imprimir quiero ue se cumpla la siguiente condición de abajo, sin embargo descuento_cualquier_medio_de_pago_etq_inf del informe sigue visible si Tipo_de_descuento_cbo.Value esta vacio

1
2
3
4
5
6
7
8
9
10
Private Sub Comando401_Click()
If Me.Tipo_de_descuento_cbo.Value = Empty Then
Reports![Cotizacion].[descuento_cualquier_medio_de_pago_etq_inf].Visible = False
Else
Reports![Cotizacion].[descuento_cualquier_medio_de_pago_etq_inf].Visible = True
End If
 
 
    DoCmd.OpenReport "Cotizacion", acViewPreview, "", "", acNormal
End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 756
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

ayuda con control de informe dolor de cabeza

Publicado por Jesús Manuel (375 intervenciones) el 15/04/2019 08:55:50
Lo primero sería abrir el informe y luego ejecutar el código para ocultar/mostrar campos.

En cuanto a la comparación, prueba con: If IsNull (Me.Tipo_de_descuento_cbo) or Me.Tipo_de_descuento_cbo="" Then


Otra opción es abrir el informe desde el formulario y poner el código de control (ocultar/mostrar campos) en el evento AL IMPRIMIR del DETALLE del informe, abriendo el informe en VISTA PRELIMINAR.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Norberto
Val: 1.094
Oro
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

ayuda con control de informe dolor de cabeza

Publicado por Norberto (753 intervenciones) el 15/04/2019 14:03:27
Hola:

Prueba a poner el código en el evento Al abrir del informe.

1
2
3
Private Sub Report_Open()
    Me.descuento_cualquier_medio_de_pago_etq_inf.Visible = Nz(Forms(0).Tipo_de_descuento_cbo.Value;"") <> ""
End Sub

Un saludo,

Norberto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

ayuda con control de informe dolor de cabeza

Publicado por Anonimo (3316 intervenciones) el 16/04/2019 10:36:52
Los informes tienen un trato especifico (no son interactivos como si lo son los formularios) de lo que se concluye que hay que aplicar una técnica para cada uno.

Lo primero: en los INFORMES las evaluaciones y las acciones se han de hacer en la SECCION donde este el control o controles afectados (si el control esta en la cabecera ==> el código en esa sección, si esta en detalle ==> pues a esa sección … etc.)

Lo segundo: algunos tipos de objeto funcionan de forma diferente, por ejemplo los combos (y aquí parece por la definición de objetos que hay uno implicado) se comportan como cuadros de texto (un combo no es dinámicamente desplegable en un informe, se convierte en un objeto estático), ojo pues con las evaluaciones de sus contenidos.

En los informes se puede hacer visible o invisible cualquier objeto, pero eso no se aplica a su etiqueta asociada (que va por libre y necesita trato aparte), además de ello el objeto no será visible …. pero sigue ocupando su espacio, si se desea reutilizar el espacio habrá que mover controles en tiempo de ejecución para poder reutilizar el espacio que utilizaba, incluso se puede cambiar el tamaño (cero es un valor aceptado para su altura, anchura incluso para su ubicación espacial eso si: dentro de su sección).

No se debería perder de vista que (al igual que ocurre en los formularios), algunos objetos dependientes del origen de datos, pueden 'no existir' si el origen de datos no existe (caso típico: mostrar un formulario sin datos en su origen y pretender evaluar los controles, controles que ni llegan a crearse) y evaluar controles que no se crean (y por lo tanto no existen) es problemático..

Para casos como el anterior se puede acudir a la función ERROR, que evalúa el objeto aunque no exista y lo delata como inexistente (es un símil al NZ con mas poder o al clásico IIF), personalmente suelo darle preferencia a evaluar el tipo dato especifico y no al control genérico, esto es: si espero un dato numérico ==> IF IsNumeric([campo xxx]) Then ….. en lugar de IF IsError([campo xxx]) Then ….
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar