Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 1414 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro
Postado

Olá Juliomar, tudo bom?

Obrigado pela ajuda no tópico anterior.

Como o mesmo já foi respondido achei pertinente abrir um novo.

Ao perceber que o RLPreviewSetup1 é visto por todos os relatórios do meu projeto em Delphi, eu tive a ideia de colocar o RLPreviewSetup1 no meu DataModule e fazer um código universal para envio de e-mail no Fortes Report, na tela de Pré-Visualização. Dessa forma o usuário poderá usar o botão ENVIAR da Pré-Visualização de qualquer relatório e conseguir enviar o mesmo por e-mail.

Conforme citei no tópico anterior, atualmente uso o seguinte código para envio do e-mail:

procedure Trlr_rel_vendasnfce.EnviarEmail;
var
  para:String;
begin
  para := InputBox('Enviar relatório por e-mail','Preencha o(s) e-mail(s) abaixo:', '');
  if para <> '' then
    begin
      try
        RLReport1.SaveToFile(ExtractFilePath(Application.ExeName) + 'relatorio.pdf');

        frm_aviso := Tfrm_aviso.Create(Application);
        frm_aviso.lbl_aviso.Caption := '   Enviando e-mail';
        frm_aviso.Show;
        frm_aviso.BringToFront;
        Application.ProcessMessages;

        dtm_banco.ACBrMail1.Clear;
        dtm_banco.ACBrMail1.IsHTML := False;
        dtm_banco.ACBrMail1.Subject := 'Relatório Vendas NFCe ';

        AjustaParametrosDeEnvio(para);

        dtm_banco.ACBrMail1.AltBody.Text := 'Empresa: ' + dtm_banco.Emitente_Nome + #13 + #13 +
                                            'CNPJ: ' + dtm_banco.Emitente_CNPJCPF + #13 + #13 +
                                            'Telefone: ' + dtm_banco.Emitente_Fone + #13 + #13 +
                                            #13 + #13 + #13 + #13 +
                                            '* Este e-mail foi enviado automaticamente pelo aplicativo da B&D Sistemas.Favor não responder. ';

        dtm_banco.ACBrMail1.AddAttachment(ExtractFilePath(Application.ExeName) + 'relatorio.pdf');

        dtm_banco.ACBrMail1.Send(False);

        frm_aviso.Free;
        ShowMessage('Relatório enviado com sucesso');
      except
        on E : Exception do
          begin
            frm_aviso.Free;
            ShowMessage('ERRO' + #13 + #13 + e.message);
          end;
      end;
    end;
end;

O grande problema está no código responsável pela geração do PDF: 

RLReport1.SaveToFile(ExtractFilePath(Application.ExeName) + 'relatorio.pdf');

Como podem ver acima eu estou especificando um relatório... Existe algum comando que salve o PDF do relatório que está com a Pré-Visualização em execução??? Algo tipo "RLReportEmVisualizacaoNoMomento.SaveToFile(ExtractFilePath(Application.ExeName) + 'relatorio.pdf');"????

  • Fundadores
Postado
6 horas atrás, doidopb disse:

O grande problema está no código responsável pela geração do PDF: 

Qual é exatamente o problema ? ele não gera o PDF ? ocorre algum erro ?

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

  • Membros Pro
Postado

Olá Daniel...

Então, o código acima funciona pois foi escrito no mesmo formulário onde existe o objeto RLReport1, dentre vários existentes no meu projeto.

Se eu tentar simplesmente jogar o RLPreviewSetup1 e esse código no seu evento onSend para o DataModule, como no mesmo não existe tal componente RLReport1 a aplicação não irá compilar.

  • Membros Pro
Postado
9 horas atrás, Daniel Simoes disse:

Você não pode chamar: ACBrNFe1.DANFE.ImprimirDANFEPDF ?

Então, a princípio isso nada tem a ver com NFes ... A idéia é criar um código universal para enviar qualquer relatório do Fortes Report existente em minha aplicação. Seja um relatório de vendas, de estoque, financeiro... Todos teriam o botão ENVIAR ativado em sua Pré-Visualização e ao clicar no mesmo o relatório em questão seria enviado por e-mail.

Inclusive esse código seria finalmente um exemplo válido para todos com tal finalidade, pois procurei exaustivamente na internet e a única menção a algo parecido seria um exemplo (sendmail.zip) só que usando versões muito antigas do Fortes e mencionado em Foruns desativados há tempos.

Postado

Boa noite.

Anexei um projetinho com um exemplo de como faço para enviar.

Sete a propriedade "JobTitle" de cada relatório para servir como nome do arquivo pdf gerado.

Debug a unit SendMailOptions, até o "FilterPages", para entender como é gerado o pdf.

Falta só incluir sua rotina para enviar o email.

[]´s

Edson

EnviaRelatorioPorEmail.rar

  • Curtir 1
  • 5 semanas depois ...
  • Membros Pro
Postado
Em 03/07/2018 at 23:13, Edson.pol disse:

Boa noite.

Anexei um projetinho com um exemplo de como faço para enviar.

Sete a propriedade "JobTitle" de cada relatório para servir como nome do arquivo pdf gerado.

Debug a unit SendMailOptions, até o "FilterPages", para entender como é gerado o pdf.

Falta só incluir sua rotina para enviar o email.

[]´s

Edson

EnviaRelatorioPorEmail.rar

Olá meu amigo, tudo bom?

Obrigado pelo retorno e perdoe pela demora em responder, mas acabo de ver sua mensagem.

Irei verificar seu projeto e posto aqui os resultados.

Abraços

  • 2 anos depois...
  • Este tópico foi criado há 1414 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...