Access - impresión consecutivas de informes

 
Vista:

impresión consecutivas de informes

Publicado por serayap (1 intervención) el 27/12/2002 14:05:30
Antes de todo un Saludo.
Tengo un problema para imprimir informes.Mi situacion es ésta:
En un Formulario tengo un combobox el cual tiene una lista de valores.Cuando selecciono un valor y le doy a un boton de imprimir me imprime un informe con los registros filtrado por el valor del combobox(con el docmd.openreport).Pero cuando le doy a otro boton de imprimir todos sin haber seleccionado valor en el combobox el docmd.openreport lo tengo metido en un bucle For next el cual cuenta el numero de valores del combobox y va ejecutando el docmd tantas veces como valores hay, y cada uno con su nombre(dado que utilizo el controlador de pdfwriter modificando antes de imprimir el nombre de archivo en el ini del pdfwriter.
todas las impresiones me las hace en pdf
El problema esta que abro el primer archivo pdf creado y contiene la informacion del 2º y asi sucesivamente hasta el ultimo que no tiene datos.
si el codigo lo ejecuto paso a paso me los crea correctamente. Con lo cual deduzco que el docmd va por una parte y el bucle for va por otra en cuanto al tiempo.
he probado meter un bucle de retardo despues de cada ejecucion del docmd pero se me cuelga la base de datos.Tambien he probado meter el Doevents despues de escribir el INI del PDFWRITER y despues de cada impresión y sigo teniendo el mismo problema.
Por eso solicito ayuda de un experto.
Un Saludo de nuevo y gracias.
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 Alejandro

impresión consecutivas de informes

Publicado por Alejandro (4142 intervenciones) el 25/04/2023 22:44:00
Hola.

El problema que estás experimentando probablemente se deba a que el código se está ejecutando demasiado rápido y la función que genera los archivos PDF aún no ha terminado de guardar el archivo antes de que se inicie la siguiente iteración del bucle.

Para solucionar esto, puedes utilizar la función Wait de VBA para hacer que el código espere un tiempo antes de continuar con la siguiente iteración del bucle. Puedes agregar una instrucción Wait en tu bucle For-Next justo después de la llamada a la función DoCmd.OpenReport. De esta manera, el código esperará un poco antes de continuar con la siguiente iteración del bucle.

Por ejemplo, podrías utilizar el siguiente código:

1
2
3
4
5
6
For Each item In Me.ComboBox.ItemsSelected
    Me.ComboBox.Value = item
    DoCmd.OpenReport "NombreDelInforme", acViewPreview
    DoEvents 'Permite que Access procese los eventos pendientes
    Wait 5 'Espera 5 segundos antes de continuar con la siguiente iteración
Next item
Donde Wait es una función que esperará la cantidad de segundos especificada antes de continuar con la ejecución del código. Puedes utilizar el siguiente código para definir la función Wait:

1
2
3
4
5
6
7
Sub Wait(ByVal seconds As Long)
    Dim endtime As Date
    endtime = DateAdd("s", seconds, Now())
    Do While Now() < endtime
        DoEvents
    Loop
End Sub

Con esto, deberías poder asegurarte de que el código espere el tiempo suficiente para que el archivo PDF se genere antes de continuar con la siguiente iteración del bucle.

Espero que esto te ayude a resolver el problema.
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