Access - Pausa al imprimir

 
Vista:
Imágen de perfil de Luis David
Val: 26
Ha aumentado su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

Pausa al imprimir

Publicado por Luis David (9 intervenciones) el 31/05/2018 06:14:02
Hola amigos, espero que alguien pueda ayudarme. Trataré de ser breve. La base de datos que manejo, me genera muchos reportes individuales, alrededor de 80 hojas, separadas no son continuas, Reporte1... Reporte2... y asi hasta el Reporte80. Para usos prácticos mando a imprimir todos los reportes en PDF al mismo tiempo con este comando:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private Sub Comando651_Click()
On Error GoTo Err_Comando651_Click
    Dim stDocName As String
 
        stDocName = "Reporte1"
    DoCmd.OpenReport "Reporte1", acViewNormal, "", "[Empresa]![Id_Principal]=" & Me.Id_Principal
 
   (asi uno por uno hasta...)
 
        stDocName = "Reporte80"
    DoCmd.OpenReport "Reporte80", acViewNormal, "", "[Empresa]![Id_Principal]=" & Me.Id_Principal
 
Exit_Comando651_Click:
    Exit Sub
Err_Comando651_Click:
    MsgBox Err.Description
    Resume Exit_Comando651_Click
End Sub

El problema que tengo es que al final me desordena los documentos, no todos, pero algunos me los pone en otro lugar y necesito que vayan en el orden que es. Yo pienso que como son muchos reportes en ocasiones se satura o algo asi e "imprime" unos antes que otros, no siempre en el orden en el que van.

Mi pregunta es si se puede hacer una "pausa" entre impresion e impresion, algo como esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Private Sub Comando651_Click()
On Error GoTo Err_Comando651_Click
    Dim stDocName As String
 
        stDocName = "Reporte1"
    DoCmd.OpenReport "Reporte1", acViewNormal, "", "[Empresa]![Id_Principal]=" & Me.Id_Principal
 
(AQUI PONER UNA PAUSA, POR EJEMPLO DE UN SEGUNDO Y LUEGO CONTINAR EL REPORTE SIGUIENTE)
 
        stDocName = "Reporte2"
    DoCmd.OpenReport "Reporte2", acViewNormal, "", "[Empresa]![Id_Principal]=" & Me.Id_Principal
 
(AQUI PONER OTRA PAUSA  DE UN SEGUNDO Y LUEGO CONTINAR EL REPORTE SIGUIENTE Y ASI HASTA EL REPORTE 80)
 
        stDocName = "Reporte80"
    DoCmd.OpenReport "Reporte80", acViewNormal, "", "[Empresa]![Id_Principal]=" & Me.Id_Principal
 
Exit_Comando651_Click:
    Exit Sub
Err_Comando651_Click:
    MsgBox Err.Description
    Resume Exit_Comando651_Click
End Sub

Es posible?
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
Imágen de perfil de Antoni Masana
Val: 78
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Pausa al imprimir

Publicado por Antoni Masana (32 intervenciones) el 31/05/2018 06:50:42
Esto además de hacer una pausa de 1 segundo entre report ejecuta otros eventos, evita la sensación de cuelgue y hace el código más corto y más fácil de leer:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub Comando651_Click()
    Dim stDocName As String, a as Integer, Hora as Single
    On Error GoTo Err_Comando651_Click
    For a= to 80
        stDocName = "Reporte" & a
        DoCmd.OpenReport "Reporte" & a, acViewNormal, "", "[Empresa]![Id_Principal]=" & Me.Id_Principal
        Hora = Timer + 1: While Hora > Timer: DoEvents: Wend
    Next
Exit_Comando651_Click:
    Exit Sub
Err_Comando651_Click:
    MsgBox Err.Description
    Resume Exit_Comando651_Click
End Sub

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de Luis David
Val: 26
Ha aumentado su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

Pausa al imprimir

Publicado por Luis David (9 intervenciones) el 01/06/2018 02:18:40
Muchas gracias Antoni Masana, claro y preciso. No todos los héroes llevan capa...
Espero algún día poder ayudar a alguien también con mis conocimientos.
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

Pausa al imprimir

Publicado por Norberto (753 intervenciones) el 31/05/2018 08:55:42
Hola.

Añade un módulo en el que incluyes este código:

1
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

En tu código, entre reporte y reporte, añades:

1
Sleep 1000 'Para un segundo ya que el parámetro va en milisegundos.

Otra cosa: ¿repites el código 80 veces!

1
2
3
4
5
6
7
8
...
    Dim n As Integer
    ...
    For  n = 1 To 80
        stDocName = "Reporte" & n
        DoCmd.OpenReport stDocName, acViewNormal, "", "[Empresa]![Id_Principal]=" & Me.Id_Principal 'Ya que defines la variable, úsala.
        Sleep 1000 'o lo que veas que va bien
    Next

También puedes hacer un nuevo reporte y colocar los otros 80 a modo de subinformes.

Captura

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
2
Comentar
Imágen de perfil de Luis David
Val: 26
Ha aumentado su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

Pausa al imprimir

Publicado por Luis David (9 intervenciones) el 01/06/2018 02:23:08
Norberto te agradezco mucho la respuesta.

Re..- Otra cosa: ¿repites el código 80 veces!
Pues si (jeje) es la falta de conocimiento y parte del aprendizaje de los maestros como tu, pero doy gracias a personas como ustedes que saben compartir sus conocimientos sin esperar nada a cambio. Mi gratitud y reconocimiento para ti. Espero también algún día poder ayudar a alguien con lo que yo sepa. Gracias
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