Como exportar un informe de Access a varios PDF con nombre de campo

Soy nuevo en esto.

Tengo un informe de 105 Productos creado tal que la imagen adjunta: (para cada producto una hoja con sus características)

Me gustaría exportar este informe a varios PDF, es decir, que cada uno de los productos tenga su archivo pdf (105 en total) y que su nombre sea el campo código.

He estado intentándolo mediante botones pero no he conseguido salirme

1 Respuesta

Respuesta
3

Lo puedes hacer de muchas formas. Depende de donde "sacas" los datos, de si el código es correlativo, o al menos está colocado ascendente, etc. Por ejemplo, supongamos que tengo una tabla

Como no tengo código voy a usar el idcliente para crear los pdf

En un formulario tengo un botón, aunque podría estar en cualquier otro evento. En el evento Al hacer clic creo un procedimiento de evento y lo pongo como

Private Sub Comando27_Click()
Dim i As Byte
For i = 1 To 10
DoCmd.OpenReport "clientes", acPreview, , "idcliente=" & i & ""
DoCmd.OutputTo acOutputReport, "clientes", "PDFFormat(*.pdf)", "C:\users\cabarcos\documents\borrar\enviar\" & "" & i & "" & ".pdf"
DoCmd.Close acReport, "clientes"
Next
End Sub

Es decir, abre el informe en aquel registro que idclientesea igual a la variable que he definido. Envíalo en formato PDF a la carpeta Enviar con el idcliente como nombre. Luego cierra el informe, para que pase al siguiente número

Cuando lo pulso

Me había olvidado, mira como solo muestra un cliente

El problema que veo que tengo es que no son números correlativos, tengo éste tipo de datos en la tabla:

Donde sacó el siguiente informe para cada uno de los productos:

En el botón generador de pdf es donde quiero que a partir de éste, generar los pdf's para cada producto.

Como información: el último 'new fluid code según WN' es 97006

Al poner el siguiente código:

Private Sub Comando1163_Click()
Dim i As Byte
For i = 1 To 97006 (he probado poniendo 105 o 97006)
DoCmd.OpenReport "Copia de Hojas de producto 2020", acPreview, , "new fluid code según WN=" & i & ""
DoCmd.OutputTo acOutputReport, "Copia de Hojas de producto 2020", "PDFFormat(*.pdf)", "M:\NORMAS NUEVAS\2. Productos (sin hacer)" & "" & i & "" & ".pdf"
DoCmd.Close acReport, "Copia de Hojas de producto"
Next
End Sub

Me da el siguiente error:

La página no me comunicó que habías repreguntado por eso me he retrasado. Por partes, te sale la ventana de desbordamiento porque estás poniendo

Dim i as byte     Pero byte sólo alcanza hasta 255 por eso cuando le dices

 ...to 97006    estás superando el límite del tamaño byte

En tu caso tendrías que poner Dim i as long  que admite hasta aproximadamente 3 mil millones y pico

Segundo, si le pones tal como tienes puesto te "imprimiría" 97006 informes

Después de mirar la tabla no veo ningún campo que tenga valor correlativo, por eso te aconsejaría que a la tabla le añadieras algún campo autonumérico, o algún campo que tenga un valor correlativo, de forma que pudieras usar(según dijiste son 105 registros

dim i as integer

for i=1 to 105

ò

for i=200 to 205

ó

for i=400 to 505

De forma que "recorra" los 105 registros.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas