
Generar PDF filtrados por un campo de una tabla
Publicado por Jorge (9 intervenciones) el 27/10/2017 02:57:36
Hola, antes de cualquier cosa dar las gracias a todos los integrantes de este foro que me ha ayudado bastante en varias ocasiones. Hoy les traigo este problema que me esta dando quebradero de cabeza. La cosa es que tengo un informe llamado contratoPDF en el cual hay campos procedentes de tres tablas : clientes, locales y caja. He implementado este codigo VBA que pondre a continuación en el evento de un boton para poder generar los contratos iniciales de todos mis clientes filtrados segun Id_cliente que es el campo clave de la tabla de clientes.
Código:
Al pulsar el boton me genera un error y me dice que el campo Id_cliente hace referencia a mas de una tabla.
Id_cliente de la tabla clientes esta relacionado con las demas tablas pero nose como arreglar ese error es decir hacer que el origen de los datos sean varias tablas.
En el ejemplo cambié el origen del filtrado y en vez de la tabla clientes puse una consulta intentando seleccionar en la consulta mas tablas. Y no se que hacer. Algun alma caritativa que me eche una mano pls :)
Código:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Private Sub Comando19_Click()
Dim db As DAO.Database
Dim rutaSalida As String
Dim sql As String
Dim rutaPdf As String
Dim elId As Long
Dim rst As DAO.Recordset
rutaSalida = Application.CurrentProject.Path & "\Contratos_PDF\"
Set db = CurrentDb
sql = "SELECT * FROM consulta_contratoPDF;"
Set rst = db.OpenRecordset(sql)
If rst.RecordCount = 0 Then GoTo Salida
Echo False
With rst
.MoveFirst
Do Until .EOF
elId = .Fields("Id_cliente").Value
DoCmd.OpenReport "ContratoPDF", acViewPreview, , "Id_cliente=" & elId
rutaPdf = rutaSalida & elId & "_" & Format(Now(), "yyyy_mmdd_hh_MM_ss ") & ".pdf"
DoCmd.OutputTo acOutputReport, "contratoPDF", "*.pdf", rutaPdf, False
DoCmd.Close acReport, "contratoPDF"
.MoveNext
Loop
End With
Echo True
MsgBox "Conversión a formato PDF correctamente!", vbInformation, "OK"
Salida:
rst.Close
Set rst = Nothing
End Sub
Al pulsar el boton me genera un error y me dice que el campo Id_cliente hace referencia a mas de una tabla.
Id_cliente de la tabla clientes esta relacionado con las demas tablas pero nose como arreglar ese error es decir hacer que el origen de los datos sean varias tablas.
En el ejemplo cambié el origen del filtrado y en vez de la tabla clientes puse una consulta intentando seleccionar en la consulta mas tablas. Y no se que hacer. Algun alma caritativa que me eche una mano pls :)
Valora esta pregunta


0