Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

dividir informe

27 views
Skip to first unread message

Freddy M. Aragón C.

unread,
Dec 16, 2009, 4:34:51 PM12/16/09
to
Buenas tardes

pregunta:

Tengo una base de datos para generar recibos de pago ahora la pregunta como
puedo hacer para que Access me guarde cada recibo individualmente en formato
"pdf" y me le de el nombre del el numero de identificaci�n del cliente para
poder dejarlo en una pagina web y que cada uno baje su recibo


Gracias

USO ACCESS 2007

Juan Cots

unread,
Dec 17, 2009, 10:43:30 AM12/17/09
to
Hola Freddy.

Podías hacer algo así:

Dim strimformepdf as string, strrutaguardar as string,
strnombreguardar as string
strinformepdf = "nombredetuinforme"
strnombreguardar = Me.CampoId
strrutaguardar = "c:\" & strnombreguardar & ".pdf"
DoCmd.OutputTo acOutputReport, strinformepdf, acFormatPDF,
strrutaguardar

Incluso podías subirlo código por FTP a tu servidor si lo deseas

Un saludo

Patxi Sanz

unread,
Dec 17, 2009, 10:54:40 AM12/17/09
to
Hola Freddy:

Crea un bucle para abrir el informe filtrado por cada registro, e indica a
Access que lo convierta y guarde como pdf.

--
Un saludo,


Patxi Sanz
Tudela (NA)

Freddy M. Aragón C.

unread,
Dec 17, 2009, 12:03:14 PM12/17/09
to
Gracias Maestros

Voy a Probar y les cuento Muchas Gracias

Freddy M. Aragón C.

unread,
Dec 17, 2009, 12:26:59 PM12/17/09
to
Gracias


ok el c�digo de Juan Cots Funciono :D ahora el bucle del Maestro Patxi eso
es lo que quiero pero hay quede un poco perdido


la idea es crear un bot�n para que me genere los archivos (1700)
aproximadamente as� cada cliente puede bajar su archivo que lo ubica por el
nombre del archivo que es el numero de identificaci�n del cliente
(id_cliente)

lo que no se es como hacer el bucle


Gracias !! :D


M�nimo es muy tonto hacerlo pero quede perdido :'(

Patxi Sanz

unread,
Dec 17, 2009, 1:21:29 PM12/17/09
to
M�s o menos, y escrito al vuelo:

Dim rst As DAO.Recordset

Set rst = CurrentDb.OpenRecordset("SELECT id_cliente FROM NombreDeLaTabla;")

Do While Not rst.EOF
DoCmd.OpenReport "NombreDelInforme", , , "id_cliente = " &
rst!id_cliente, acHidden
Reports!NombreDelInforme.Caption = "Factura del cliente: " &
rst!id_cliente
'Resto del c�digo de Juan Cots para exportar el informe
rst.MoveNext
Loop

rst.Close
Set rst = Nothing

Freddy M. Aragón C.

unread,
Dec 17, 2009, 3:42:36 PM12/17/09
to
Hola Amigo Patxi Gracias por tu ayuda pero sigo teniendo un error

lo otro es que no recorre el bucle me deja todo en un mismo archivo con el
nombre del primer registro (id_cliente) " lo estoy haciendo por texto para
hacerlo r�pido " y me lo esta enviando primero a la impresora :'( y ya estoy
sin hojas :D:D:D:D


Dim strinformepdf As String
Dim strrutaguardar As String
Dim strnombreguardar As String


Dim rst As DAO.Recordset

Set rst = CurrentDb.OpenRecordset("SELECT id_cliente FROM tbl_cliente;")

Do While Not rst.EOF
DoCmd.OpenReport "inf_recibos", , , "id_cliente = " & rst!id_cliente,
acHidden
Reports!inf_recibos.Caption = "Recibo del cliente: " & rst!id_cliente
'el erro se produce aqu� dice que el nombre del informe esta mal escrito o
no se encuentra


strinformepdf = "inf_recibos"
strnombreguardar = rst!id_cliente
strrutaguardar = "d:\" & strnombreguardar & ".txt"
DoCmd.OutputTo acOutputReport, strinformepdf, acFormatTXT,
strrutaguardar

Juan Cots

unread,
Dec 17, 2009, 4:51:07 PM12/17/09
to
Pues...espero que Patxi se de cuenta del porque del error, pero lo
cierto es que me parece que esa linea no la necesitas para nada.

Dim strinformepdf As String
Dim strrutaguardar As String
Dim strnombreguardar As String
Dim rst As DAO.Recordset

strinformepdf = "inf_recibos"


Set rst = CurrentDb.OpenRecordset("SELECT id_cliente FROM
tbl_cliente;")
Do While Not rst.EOF

DoCmd.OpenReport strinformepdf, , , "id_cliente = " & rst!
id_cliente,acHidden


strnombreguardar = rst!id_cliente
strrutaguardar = "d:\" & strnombreguardar & ".txt"
DoCmd.OutputTo acOutputReport, strinformepdf,
acFormatTXT,strrutaguardar
rst.MoveNext
Loop

Un saludo
Visita mi blog
http://accessjuancots.blogspot.com/


Freddy M. Aragón C.

unread,
Dec 18, 2009, 8:55:17 AM12/18/09
to
Gracias Juan

aunque sigue igual; no he podido encontrar el modo de como hacer para que
solo salga un reporte de un solo cliente

lo que pasa es:

comienza a recorrer la lista de cliente saca el numero de identificaci�n y
todo pero en el m�todo

DoCmd.OutputTo acOutputReport, strinformepdf, acFormatTXT, strrutaguardar

saca el archivo con el nombre que necesito pero mete los 1700 recibos en ese
solo archivo con en nombre del 1 cliente

no se si me hice entender :'(

Patxi Sanz

unread,
Dec 18, 2009, 10:58:23 AM12/18/09
to
El error se produce porque la apertura predeterminada es enviar el informe a
la impresora, y me com� que haga una vista previa :-(

Y como lo ha enviado a la impresora, ya no podemos cambiar el t�tulo, porque
el informe se ha cerrado tras imprimirlo.

Y como estaba escrito al vuelo, falta cerrar el informe.

Prueba con esto:

Dim strinformepdf As String
Dim strrutaguardar As String
Dim strnombreguardar As String
Dim rst As DAO.Recordset

Set rst = CurrentDb.OpenRecordset("SELECT id_cliente FROM tbl_cliente;")

Do While Not rst.EOF


strinformepdf = "inf_recibos"
strnombreguardar = rst!id_cliente
strrutaguardar = "d:\" & strnombreguardar & ".txt"

DoCmd.OpenReport strinformepdf , acViewPreview, , "id_cliente = " &

rst!id_cliente, acHidden
Reports!inf_recibos.Caption = "Recibo del cliente: " & rst!id_cliente

DoCmd.OutputTo acOutputReport, strinformepdf, acFormatTXT,
strrutaguardar

DoCmd.Close acReport, strinformepdf, acSaveNo
rst.MoveNext
Loop

rst.Close
Set rst = Nothing

Si te sigue enviando el informe con todos los registros, cambia la l�nea:

DoCmd.OutputTo acOutputReport, strinformepdf, acFormatTXT,
strrutaguardar

Por:

DoCmd.SelectObject acReport, strinformepdf
DoCmd.OutputTo acOutputReport, , acFormatTXT, strrutaguardar

Para que Access seleccione el informe que acabamos de abrir y lo env�e tal y
como lo hemos abierto, en vez de crearlo de nuevo.

Juan Cots

unread,
Dec 18, 2009, 11:08:30 AM12/18/09
to
Hola Freddy.
Como usas Access 2007 podemos aprovechar para usar las nuevas
variables temporales (TempsVars)
En tu consulta origen del informe en la fila criterios del campo
id_cliente ponemos:
=TempVars!MiCliente

Y creo que no hará falta ya abrir el informe para que funcione,
simplemente lo modificas así:

Dim strinformepdf As String
Dim strrutaguardar As String
Dim strnombreguardar As String
Dim rst As DAO.Recordset

strinformepdf = "inf_recibos"


Set rst = CurrentDb.OpenRecordset("SELECT id_cliente FROM
tbl_cliente;")
Do While Not rst.EOF

strnombreguardar = rst!id_cliente
TempVars!MiCliente = strnombreguardar


strrutaguardar = "d:\" & strnombreguardar & ".txt"

DoCmd.OutputTo acOutputReport, strinformepdf,
acFormatTXT,strrutaguardar
TempVars.Remove "MiCliente"


rst.MoveNext
Loop
rst.Close
Set rst = Nothing

La verdad es que no he utilizado mucho TempVars pero yo diría que
debería de funcionar, ya que la consulta se encargará de filtrar el
cliente por la variable temporal en cada paso del recordset

Juan Cots

unread,
Dec 18, 2009, 11:10:44 AM12/18/09
to
Vaya Patxi los dos a la vez.

Aprovecho para felicitaros las navidades a ambos

Un saludo

Freddy M. Aragón C.

unread,
Dec 18, 2009, 11:57:31 AM12/18/09
to
Gracias ya puede resolverlo quedo asi :D

Dim strinformepdf As String
Dim strrutaguardar As String
Dim strnombreguardar As String

Dim nombre_cliente As String


Dim rst As DAO.Recordset
strinformepdf = "inf_recibos"

Set rst = CurrentDb.OpenRecordset("SELECT tbl_clientes.id_cliente,
tbl_clientes.ape_1_cliente, tbl_clientes.ape_2_cliente,
tbl_clientes.nombres_cliente FROM tbl_clientes;")

Do While Not rst.EOF
DoCmd.OpenReport strinformepdf, acViewReport, , "id_cliente = " &
rst!id_cliente, acHidden
strnombreguardar = rst!id_cliente
nombre_cliente = rst!ape_1_cliente & " " & rst!ape_2_cliente
strrutaguardar = "d:\" & nombre_cliente & " " & strnombreguardar &

".pdf"
DoCmd.OutputTo acOutputReport, strinformepdf, acFormatPDF,
strrutaguardar

Patxi Sanz

unread,
Dec 18, 2009, 2:45:53 PM12/18/09
to
Igualmente, que pases unas Felices Fiestas y que el a�o que viene sea mucho
mejor que el que acaba :-)

Patxi Sanz

unread,
Dec 18, 2009, 2:46:16 PM12/18/09
to
0 new messages