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


    [Resolvido]Exportar vários relatórios através de dados de subformulário

    avatar
    PepeTuga
    Intermediário
    Intermediário


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 91
    Registrado : 17/10/2013

    [Resolvido]Exportar vários relatórios através de dados de subformulário Empty [Resolvido]Exportar vários relatórios através de dados de subformulário

    Mensagem  PepeTuga 17/10/2013, 12:12

    Viva!

    Antes de colocar a minha questão, quero congratular e agradecer ao fórum por ter contribuído para a execução dos meus projetos Access. Sem este dificilmente conseguiria ter tão bons resultados.

    Utilizo o Access 2007 e a questão é a seguinte:
    (Já passei dias a tentar procurar um solução, quer no fórum quer noutros sítios da net, mas nenhuma das que encontrei se adapta ao que pretendo.)

    Tenho um formulário com um subformulário que filtra os fornecedores a quem eu quero enviar um relatório, cuja informação por cada relatório irá variar em função de cada fornecedor.

    Atualmente o que tenho em uso funciona da seguinte forma:
    1. O formulário principal abre e são visualizados os fornecedores (filtrados) a quem eu devo enviar o dito relatório;
    2. Coloco o cursor na linha do fornecedor correspondente e aciono o botão que faz abrir o relatório. (A consulta que está vinculada ao relatório reconhece a posição do cursor e apenas mostra a informação do respetivo fornecedor.);
    3. Dentro deste existe um segundo botão que passa o relatório para pdf e envia por e-mail.

    Funciona mas torna-se trabalhoso quando temos muitos fornecedores a quem enviar o relatório. (Facilmente poderei adaptar o comando e eliminar o 3º passo.)

    Sendo o objetivo principal fazer todos estes passos através de um único botão, a execução deve passar (julgo eu) por duas fases:
    1ª Exportar o relatório em pdf para uma pasta específica;
    2.ª Enviar o relatório em pdf exportado por e-mail.

    A dificuldade está na 1ª fase. O código abaixo faz o que pretendo, ou seja, reconhece e gera um relatório pdf para cada fornecedor, só que todos os relatórios em termos de conteúdo pertencem ao fornecedor que se posiciona em 1º lugar no subformulário.

    Isto porque o cursor não segue para o registo seguinte após ter sido criado o 1º pdf. Tentei adaptar o comando para que o cursor desse este “salto” mas sem sucesso.

    Private Sub Comando21_Click()
    On Error Resume Next
    Me.Fornecedores_Enviar_subformulário.SetFocus  ‘Subformulário
    Dim rst As DAO.Recordset
    Set rst = Forms!Fornecedores_Enviar.Recordset  ‘Formulário principal
    Do Until rst.EOF
    DoCmd.OutputTo acOutputReport, "Relatorio", acFormatPDF, "G:\Pasta1\Relatorio_" & Me.ID_Fornecedor & ".pdf"
    DoCmd.GoToRecord , "", acNext
    rst.MoveNext
    Loop
    End Sub

    Desculpem o detalhe, espero ter sido claro e agradeço as v/ªs sugestões/soluções.
    Abraço,
    PP
    _________________________________________

    Olá pessoal!

    Consegui matar a charada!

    Coloquei no relatório, no evento "Ao activar", o comando DoCmd.OutputTo acOutputReport, "Relatorio", acFormatPDF, "G:\Pasta1\Relatorio_" & Me.ID_Fornecedor & ".pdf".

    No formulário principal coloquei um botão com o seguinte código:

    Private Sub Comando17_Click()
    On Error Resume Next
       Me.Fornecedores_Enviar_subformulário.SetFocus  ‘Subformulário
       DoCmd.GoToRecord , "", acFirst 'Garante que ao clicarmos no botão iniciamos sempre no 1º registo
               Dim rst As DAO.Recordset
               Set rst = Me.Fornecedores_Enviar_subformulário.Form.Recordset
               Do Until rst.EOF
               DoCmd.OpenReport "Relatório", acViewReport, , stcriterio 'Abre relatório
               DoCmd.Close acReport, "Concursos_Anúncios" 'Fecha relatório
               rst.MoveNext
               Loop
    End If
    End Sub

    Admito que possam haver outras formas mais bem construídas mas para já serve...

    Apesar de não ter tido respostas a este tópico, agradeço a quem possa ter tentado fazer algo.

    Abraço,
    PP

      Data/hora atual: 13/5/2024, 12:24