MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


2 participantes

    [Resolvido]Emitir Relatorios em PDF em lote

    avatar
    tomaurow
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3
    Registrado : 03/10/2023

    [Resolvido]Emitir Relatorios em PDF em lote Empty [Resolvido]Emitir Relatorios em PDF em lote

    Mensagem  tomaurow 4/10/2023, 17:06

    Tenho um banco de dados que emite recibos a cada mes. São 170 recibos que devo emitir por dia, e gostaria de salva-los e enviar por email para cada conta cadastrada (para 170 contas). Testei alguns códigos em VBA mas sempre dá erro e nao salva nada. Poderiam me orientar onde estou errando?

    O relatório é gerado por uma consulta que contem o numero do recibo gerado para cada cliente, os dados dos clientes e a mensalidade daquele mes.

    o código que usei foi um que achei no youtube, mas n funciona. Este:

    Código:

    Option Compare Database
    Public idc As Integer
    Public Sub ExportaPDF()
    Dim rs As DAO.Recordset
    Dim sql As String
    sql = "Select * From LOTEGeraPDFRecibo"
    Set rs = CurrentDb.OpenRecordset(sql)
        Do While Not rs.EOF
           idc = rs.Fields(0)
           Call fncidRecibo
           DoCmd.OutputTo acOutputReport, "LOTERelatorio_Recibo", acFormatPDF, CurrentProject.Path & "\Recibos\" & rs.Fields(0) & ".pdf"
           Sleep (5000)
           rs.MoveNext
        Loop
    Set rs = Nothing
    idc = Empty
    End Sub

    Public Function fncidRecibo() As Integer
        fncidRecibo = idc
    End Function
    Alexandre Fim
    Alexandre Fim
    Developer
    Developer


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3217
    Registrado : 13/12/2016

    [Resolvido]Emitir Relatorios em PDF em lote Empty Re: [Resolvido]Emitir Relatorios em PDF em lote

    Mensagem  Alexandre Fim 4/10/2023, 18:52

    Olá Mauro,

    Seja bem-vindo ao fórum.

    Para ser mais rápido, disponibilize uma cópia do seu banco de dados, para análise e solução do problema. (tem um link na minha assinatura que ensina apostar anexos no fórum)
    OBS: Também existe a possibilidade de envio do recibo diretamente por e-mail, sem a necessidade de gerar em pdf e armazená-lo.

    É isso.

    Att,

    Alexandre Fim


    .................................................................................
    Arrow  Marcar tópico como Resolvido: clique aqui
    Arrow  Postar anexos no fórum: clique aqui

    [Resolvido]Emitir Relatorios em PDF em lote Setinf11
    Sistemas e Tecnologia Ltda
    avatar
    tomaurow
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3
    Registrado : 03/10/2023

    [Resolvido]Emitir Relatorios em PDF em lote Empty Problema em gerar relatorios em PDFs em lote

    Mensagem  tomaurow 5/10/2023, 17:46

    Oi Alexandre, muito obrigado pela hospitalidade Smile

    Segue o arquivo do projeto. Os dados ainda são de testes. Já consegui emitir os recibos mas eles estão saindo todos juntos em um PDF.

    No formulario principal tem o botão Emitir Recibos, que é onde roda o VBA e faz os PDFs.

    Daí estou com esse problema, como fazer pra separar os PDFs direitinho? Cada PDF com um com seu respectivo numero de recibo, dados do pagamento e cliente.

    O código usado no botão é este:

    Código:
    Option Compare Database

    Private Sub Comando1_Click()
        Dim db As DAO.Database
        Dim rs As DAO.Recordset
        Dim strSQL As String
        Dim strFileName As String
        Dim strPath As String ' Caminho de destino para os arquivos PDF
        
        ' Especifique o caminho de destino para os arquivos PDF
        ' Certifique-se de que o diretório exista
        strPath = "C:\Recibos\" ' Substitua pelo caminho desejado
        
        Set db = CurrentDb
        strSQL = "SELECT * FROM GeraImpressaoReciboCRC" ' Substitua pelo nome da sua consulta
        
        Set rs = db.OpenRecordset(strSQL)
        
        Do Until rs.EOF
            ' Construa o nome do arquivo com base no número de recibo, data e nome do cliente
            strFileName = strPath & "Recibo_" & rs!Recibo & "_" & rs!CartCNS & "_" & rs!CartDenominacao & "_" & Format(Date, "yyyymmdd") & ".pdf"
            
            ' Crie o PDF usando o relatório personalizado
            DoCmd.OutputTo acOutputReport, "Relatorio_ReciboCRC", acFormatPDF, strFileName
            
            rs.MoveNext
        Loop
        
        rs.Close
        Set rs = Nothing
        Set db = Nothing
    End Sub

    A tela onde aparece o botão é esta:
    [Resolvido]Emitir Relatorios em PDF em lote Emitir10
    avatar
    tomaurow
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 3
    Registrado : 03/10/2023

    [Resolvido]Emitir Relatorios em PDF em lote Empty Agora foi :)

    Mensagem  tomaurow 7/10/2023, 15:34

    Consegui corrigir por aqui mesmo. O codigo no final ficou assim

    Código:
    Dim db As Database
        Dim rs As Recordset
        Dim strSQL As String
        Dim strNome As String
        Dim strRecibo As String
        Dim strNomeArquivo As String
        Dim strDiretorio As String 'diretório onde os arquivos PDF serão salvos
        Dim dtMesReferencia As Date
        
        strDiretorio = "c:\Recibos\"
        
        strSQL = "SELECT Recibo, DataPgto, Valor, CartNome, OfiNome, Cartemail, MesREF FROM GeraImpressaoReciboCRC"
        Set db = CurrentDb
        Set rs = db.OpenRecordset(strSQL)
        
        ' Loop através dos registros da consulta
        Do While Not rs.EOF
            ' Obtém o nome do cliente e número do recibo
            strDenominacao = rs("CartNome")
            strRecibo = rs("Recibo")
            strRecibo = Format(strRecibo, "00000") 'padroniza o formato do recibo em numero com 5 digitos
            dtMesReferencia = rs("MesREF")
            
            ' Cria um o nome do pdf
            strNomeArquivo = "Recibo_" & strRecibo & "_" & Format(dtMesReferencia, "yyyymm") & " - " & strDenominacao & ".pdf"
            
            DoCmd.OpenReport "LOTERelatorio_Recibo", acViewPreview, , "Recibo = " & strRecibo
            
            ' Exporta o relatório
            DoCmd.OutputTo acOutputReport, "", acFormatPDF, strDiretorio & strNomeArquivo
            DoCmd.Close acReport, "LOTERelatorio_Recibo"
            rs.MoveNext
        Loop
        
        rs.Close
        Set rs = Nothing
        Set db = Nothing
        
        MsgBox "PDFs gerados com sucesso!"

    Conteúdo patrocinado


    [Resolvido]Emitir Relatorios em PDF em lote Empty Re: [Resolvido]Emitir Relatorios em PDF em lote

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 29/4/2024, 09:33