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
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
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)
Voy a Probar y les cuento Muchas 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 :'(
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
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
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/
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 :'(
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.
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
Aprovecho para felicitaros las navidades a ambos
Un saludo
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