Boa noite a todos do Fórum.
Sou um entusiasta do Access, mas ainda sem muitos conhecimentos e nem experiência.
Criei um sistema de contas a pagar, para a empresa onde trabalho e agora estou com um novo desafio de desenvolvimento para o sistema.
Preciso criar uma rotina que permita através de um relatório, disparar e-mails a todos os fornecedores, contendo um resumo dos pagamentos mensais.
A rotina para disparo de e-mail, mais a geração de PDF individual, já consegui.
O problema está quando realizo o filtro através de um Form, para estipular o período entre datas, que deve ser apresentado no relatório.
O filtro em si, funciona perfeitamente, abre o relatório com as informações desejadas. O problema ocorre quando clico no botão para gerar o PDF.
Apresenta Erro em tempo de execução 3075: Erro de sintaxe na cadeia na expressão de consulta '(((Cns_Resumo_Pagamentos.Datapagamento) BETWEEN #01/11/2016# and #30/11/2016#
Abaixo o código que está gerando o erro:
Private Sub Btn_Gera_Pdf_Click()
Dim db As Database
Dim rs As DAO.Recordset
Dim strSQL As String, strstartdate As Date, strEndDate As Date
Set db = CurrentDb
strstartdate = [Forms]![Formulário_Resumo_vendas]![Text_Data_Ini].Value
strEndDate = [Forms]![Formulário_Resumo_vendas]![Text_Data_Fim].Value
strSQL = "SELECT Cns_Resumo_Pagamentos "
strSQL = strSQL & " FROM Cns_Resumo_Pagamentos WHERE (((Cns_resumo_Pagamentos.datapagamento) BETWEEN #" & strstartdate & "# and #" & strEndDate & "#"""
Set rs = db.OpenRecordset(strSQL, dbOpenSnapshot)
Do While Not rs.EOF
DoCmd.OpenReport "Rlt_Resumo_Pagamentos", acViewPreview, , "CodPrestador=" & rs!CodPrestador, acWindowNormal
DoCmd.OutputTo acOutputReport, "Rlt_Resumo_Pagamentos", acFormatPDF, "C:\Users\Fabi e Piter\Desktop\projeto" & rs!CodPrestador & ".pdf", False, "", 0, acExportQualityPrint
DoCmd.Close acReport, "Rlt_Resumo_Pagamentos"
rs.Edit
rs!Data_PDF = Date
rs.Update
rs.MoveNext
Loop
MsgBox "Os registros foram exportados para PDF", vbInformation, "Concluído"
rs.Close
Set rs = Nothing
End Sub
Quando eu informo as datas direto no critério da consulta, funciona, mas não quero que o usuário tenha acesso a raiz do sistema.
Agradeço antecipadamente, caso alguém tenha alguma dica para resolver este impasse.
Muito obrigado
Sou um entusiasta do Access, mas ainda sem muitos conhecimentos e nem experiência.
Criei um sistema de contas a pagar, para a empresa onde trabalho e agora estou com um novo desafio de desenvolvimento para o sistema.
Preciso criar uma rotina que permita através de um relatório, disparar e-mails a todos os fornecedores, contendo um resumo dos pagamentos mensais.
A rotina para disparo de e-mail, mais a geração de PDF individual, já consegui.
O problema está quando realizo o filtro através de um Form, para estipular o período entre datas, que deve ser apresentado no relatório.
O filtro em si, funciona perfeitamente, abre o relatório com as informações desejadas. O problema ocorre quando clico no botão para gerar o PDF.
Apresenta Erro em tempo de execução 3075: Erro de sintaxe na cadeia na expressão de consulta '(((Cns_Resumo_Pagamentos.Datapagamento) BETWEEN #01/11/2016# and #30/11/2016#
Abaixo o código que está gerando o erro:
Private Sub Btn_Gera_Pdf_Click()
Dim db As Database
Dim rs As DAO.Recordset
Dim strSQL As String, strstartdate As Date, strEndDate As Date
Set db = CurrentDb
strstartdate = [Forms]![Formulário_Resumo_vendas]![Text_Data_Ini].Value
strEndDate = [Forms]![Formulário_Resumo_vendas]![Text_Data_Fim].Value
strSQL = "SELECT Cns_Resumo_Pagamentos "
strSQL = strSQL & " FROM Cns_Resumo_Pagamentos WHERE (((Cns_resumo_Pagamentos.datapagamento) BETWEEN #" & strstartdate & "# and #" & strEndDate & "#"""
Set rs = db.OpenRecordset(strSQL, dbOpenSnapshot)
Do While Not rs.EOF
DoCmd.OpenReport "Rlt_Resumo_Pagamentos", acViewPreview, , "CodPrestador=" & rs!CodPrestador, acWindowNormal
DoCmd.OutputTo acOutputReport, "Rlt_Resumo_Pagamentos", acFormatPDF, "C:\Users\Fabi e Piter\Desktop\projeto" & rs!CodPrestador & ".pdf", False, "", 0, acExportQualityPrint
DoCmd.Close acReport, "Rlt_Resumo_Pagamentos"
rs.Edit
rs!Data_PDF = Date
rs.Update
rs.MoveNext
Loop
MsgBox "Os registros foram exportados para PDF", vbInformation, "Concluído"
rs.Close
Set rs = Nothing
End Sub
Quando eu informo as datas direto no critério da consulta, funciona, mas não quero que o usuário tenha acesso a raiz do sistema.
Agradeço antecipadamente, caso alguém tenha alguma dica para resolver este impasse.
Muito obrigado