** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Informe con Select Case
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoInforme con Select Case

 Responder Responder
Autor
Mensaje
sauro69 Ver desplegable
Habitual
Habitual


Unido: 27/Diciembre/2005
Localización: España
Estado: Sin conexión
Puntos: 109
Enlace directo a este mensaje Tema: Informe con Select Case
    Enviado: 12/Marzo/2018 a las 12:12
Buenos días,
tengo un formulario con varios criterios de búsqueda. La idea es que una vez tengo los registros filtrados como me interese se puedan imprimir.
En función de los criterios anteriores hay tres informes distintos con la siguiente instrucción:

Private Sub Comando118_Click()
Dim StrSQL As String
Select Case Me.Busqueda

Case Is = "2" 'Tenemos marcado ACREDITACIONES
    Select Case Me.Lista1
    Case Is = "POR FECHA"
    StrSQL = "SELECT [CONSULTA...].ID, [CONSULTA.....].CENTRO_NUMERO, ... FROM [CONSULTA...] Where [CONSULTA...].[MáxDeVIG_ACREDITACION] ... ORDER BY [CONSULTA...].MáxdeVig_ACREDITACION ASC;"
    DoCmd.OpenReport "LISTADO ACREDITACIONES", acViewPreview, , , , StrSQL
    End Select
    
Case Is = "3" 'Tenemos marcado RECORDATORIOS
    Select Case Me.Lista1
    Case Is = "POR FECHAS"
    StrSQL = "SELECT [CONSULTA...].ID, [CONSULTA...].CENTRO_NUMERO, ... FROM [CONSULTA...] Where [CONSULTA...].[MáxDeVIG_ACREDITACION] ... ORDER BY [CONSULTA...].MáxdeVig_ACREDITACION ASC;"
    DoCmd.OpenReport "RECORDATORIO ACREDITACION", acViewPreview, , , , StrSQL
    End Select
    
Case Is = "1" 'Tenemos marcado POR SITUACION
    Select Case Me.Lista1
    
    Case Is = "POR FECHA SOLICITUD"
    StrSQL = "SELECT [CONSULTA...].ID, [CONSULTA...].CENTRO_NUMERO, ... FROM [CONSULTA...] Where [CONSULTA...].FECHA_RESOL ... ORDER BY [CONSULTA...].SOLICITUD ASC;"
    DoCmd.OpenReport "LISTADO ACREDITACIONES SITUACION", acViewPreview, , , , StrSQL
    End Select
    
    Case Is = "POR FECHA RESOLUCION"
    StrSQL = "SELECT [CONSULTA...].ID, [CONSULTA...].CENTRO_NUMERO, ... FROM [CONSULTA...] Where [CONSULTA...].FECHA_RESOL ... ORDER BY [CONSULTA...].SOLICITUD ASC;"

    DoCmd.OpenReport "LISTADO ACREDITACIONES SITUACION", acViewPreview, , , , StrSQL
    End Select
      
End Sub


Pues bien, sólo la opción 2 (Acreditaciones) me funciona. La opción 1 y 3 no imprime los registros que me muestra el formulario.
Algo se me escapa.
Arriba
sauro69 Ver desplegable
Habitual
Habitual


Unido: 27/Diciembre/2005
Localización: España
Estado: Sin conexión
Puntos: 109
Enlace directo a este mensaje Enviado: 12/Marzo/2018 a las 14:22
He conseguido que la opción 1 también funcione.
Tanto el listado de la opción 1 como 2 saca en todos los registros seleccionados, fila a fila.
La opción 3 es una carta que ocupa un folio por cada registro. El problema es que no hace caso a Where y saca todos los registros.
La instrucción es:

Case Is = "3" 'Tenemos marcado RECORDATORIOS
    Select Case Me.Lista1
    Case Is = "POR FECHAS"
    StrSQL = "SELECT [CONSULTA RECORDATORIO ACREDITACIONES].ID, [CONSULTA RECORDATORIO ACREDITACIONES].CENTRO_NUMERO, [CONSULTA RECORDATORIO ACREDITACIONES].NOMBRE, [CONSULTA RECORDATORIO ACREDITACIONES].LOCALIDAD, [CONSULTA RECORDATORIO ACREDITACIONES].DIRECCION, [CONSULTA RECORDATORIO ACREDITACIONES].CPOSTAL,[CONSULTA RECORDATORIO ACREDITACIONES].[MáxDeVIG_ACREDITACION], [CONSULTA RECORDATORIO ACREDITACIONES].ENT_TITULAR, [CONSULTA RECORDATORIO ACREDITACIONES].DIRECC_TITULAR, [CONSULTA RECORDATORIO ACREDITACIONES].C_POSTAL_TITULAR, [CONSULTA RECORDATORIO ACREDITACIONES].LOCAL_TITULAR FROM [CONSULTA RECORDATORIO ACREDITACIONES] Where [CONSULTA RECORDATORIO ACREDITACIONES].[MáxDeVIG_ACREDITACION] between #" & Format(Nz(Me.Busca1, #1/1/1900#), "mm-dd-yyyy") & "# and #" & Format(Nz(Me.Busca2, #12/31/9999#), "mm-dd-yyyy") & "# ORDER BY [CONSULTA RECORDATORIO ACREDITACIONES].LOCALIDAD ASC;"
    DoCmd.OpenReport "RECORDATORIO ACREDITACION", acViewPreview, , , , StrSQL
    End Select

En pantalla sale bien, pero al imprimir saca todos los registros
Arriba
mounir Ver desplegable
Colaborador
Colaborador


Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 4733
Enlace directo a este mensaje Enviado: 12/Marzo/2018 a las 16:12
Hola!

Tendrás que pasar el argumento "OpenArgs" al informe.

Para ello en el evento de abrir el informe "RECORDATORIO ACREDITACION" pones:

Private Sub Report_Open(Cancel As Integer)
    If Len(Me.OpenArgs & "") > 0 Then
        Me.RecordSource = Me.OpenArgs
    End If
End Sub
Un Saludo.
Arriba
MexMan70 Ver desplegable
Colaborador
Colaborador


Unido: 17/Julio/2007
Localización: DarkSide
Estado: Sin conexión
Puntos: 9220
Enlace directo a este mensaje Enviado: 12/Marzo/2018 a las 16:34
Hola sauro69, tienes mal estructurado el Select y por ello el fallo, no veo ningún Folio en tu Consulta solo observo un filtro por un rango de fechas y sinceramente no veo porque en pantalla te funcione y al imprimirlo no, no suena lógico. 
Siempre trata de estructurar tu código lo más limpio que te sea posible para que el árbol no te impida ver el bosque Wink. Puedes intentarlo así:
Private Sub Comando118_Click()
Dim StrSQL As String
Dim strReport As String

Select Case Me.Busqueda
Case "1" 'Tenemos marcado POR SITUACION
    Select Case Me.Lista1
    Case "POR FECHA SOLICITUD"
       StrSQL = "SELECT [CONSULTA...].ID, [CONSULTA...].CENTRO_NUMERO, ... FROM [CONSULTA...] " & _
                "Where [CONSULTA...].FECHA_RESOL ... ORDER BY SOLICITUD"
       strReport = "LISTADO ACREDITACIONES SITUACION"
    'End Select    (mal ciere)
    Case "POR FECHA RESOLUCION"
       StrSQL = "SELECT [CONSULTA...].ID, [CONSULTA...].CENTRO_NUMERO, ... FROM [CONSULTA...] " & _
                 "Where [CONSULTA...].FECHA_RESOL ... ORDER BY SOLICITUD"
       strReport = "LISTADO ACREDITACIONES SITUACION"
    End Select
Case "2" 'Tenemos marcado ACREDITACIONES
    Select Case Me.Lista1
    Case "POR FECHA"
       StrSQL = "SELECT [CONSULTA...].ID, [CONSULTA.....].CENTRO_NUMERO, ... FROM [CONSULTA...] " & _
             "Where [CONSULTA...].[MáxDeVIG_ACREDITACION] ... ORDER BY MáxdeVig_ACREDITACION"
       strReport = "LISTADO ACREDITACIONES"
   End Select
Case "3" 'Tenemos marcado RECORDATORIOS
    Select Case Me.Lista1
    Case Is = "POR FECHAS"
       StrSQL = "SELECT ID, CENTRO_NUMERO, NOMBRE, LOCALIDAD, DIRECCION, CPOSTAL, [MáxDeVIG_ACREDITACION], ENT_TITULAR, " & _
                       "DIRECC_TITULAR, C_POSTAL_TITULAR, LOCAL_TITULAR " & _
                "FROM [CONSULTA RECORDATORIO ACREDITACIONES] " & _
                "WHERE [MáxDeVIG_ACREDITACION] BETWEEN #" & Format(Nz(Me.Busca1, #1/1/1900#), "mm/dd/yyyy") & "# AND #" & _
                                                            Format(Nz(Me.Busca2, #12/31/9999#), "mm-dd-yyyy") & "# " & _
                "ORDER BY LOCALIDAD"
       strReport = "RECORDATORIO ACREDITACION"
    End Select
End Select
If Len(strReport)>0 Then
   DoCmd.OpenReport strReport, acViewPreview, , , , StrSQL      
Else 
   MsgBox "No se visualizara reporte por no haber elegido un elemento de la lista1"
End If
End Sub
OneDrive: http://sdrv.ms/Vk6eJd
Arriba
sauro69 Ver desplegable
Habitual
Habitual


Unido: 27/Diciembre/2005
Localización: España
Estado: Sin conexión
Puntos: 109
Enlace directo a este mensaje Enviado: 13/Marzo/2018 a las 13:14
Muchas gracias. Es cierto, ahora queda más limpio y es más sencillo a la hora de revisar.
Al final el problema es que en el último informe me faltaba por añadir al evento "al abrir" la instrucción:

Private Sub Report_Open(Cancel As Integer)

If Len(Me.OpenArgs) > 0 Then
Me.RecordSource = Me.OpenArgs
End If
End Sub

De esta forma ya me funcionan los tres informes.
Ahora sólo me falta una tontería. La carta de los registros impares me salen sombreados en gris. Dónde narices se quita?
Arriba
sauro69 Ver desplegable
Habitual
Habitual


Unido: 27/Diciembre/2005
Localización: España
Estado: Sin conexión
Puntos: 109
Enlace directo a este mensaje Enviado: 13/Marzo/2018 a las 13:56
Arreglado. Haciendo doble click en Detalle del informe permite elegir los colores.

Podéis cerrar el hilo.
Como siempre un placer aprender de vosotros.
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable