Exportação para Excel quebrada por grupo

14/02/2013

0

Salve galera!
Seguinte estou tendo em fazer uma exportação para o Excel quebrando os dados por grupo.
Exemplo. Tenho uma tabela clientes e quero que traga na exportação quebrando por cidade...
Tipo:

São Paulo
Nome: Telefone:
Fulano de tal 115255656
Astrogildo Silva 115566524

Rio de Janeiro
Nome: Telefone:
Fulano de tal 115255656
Astrogildo Silva 115566524

Estou captando dados de uma Query de um relatório.
Se alguém ai tiver uma ideia sera muito bem vinda.

Sds a todos.
Hugo Henrick

Hugo Henrick

Responder

Posts

14/02/2013

Perivaldo Martins

Salve galera!
Seguinte estou tendo em fazer uma exportação para o Excel quebrando os dados por grupo.
Exemplo. Tenho uma tabela clientes e quero que traga na exportação quebrando por cidade...
Tipo:

São Paulo
Nome: Telefone:
Fulano de tal 115255656
Astrogildo Silva 115566524

Rio de Janeiro
Nome: Telefone:
Fulano de tal 115255656
Astrogildo Silva 115566524

Estou captando dados de uma Query de um relatório.
Se alguém ai tiver uma ideia sera muito bem vinda.

Sds a todos.


Como está montada essa query? Ela já traz essa agrupamento ou não? Passe mais detalhes por gentileza.

Boa sorte e bons códigos!
Responder

14/02/2013

Hugo Henrick

Ola Martins.
Na verdade esse foi o exemplo mais fácil que encontrei. Pois tenho um relatório que imprime esses dados.
A exportação teria que ser separada pela conta e seu devido grupo, como fiz no exemplo citado anteriormente.

Minha Query esta montada asssim:
select  M.COD_MOVIMENTO, M.DT_FATURAMENTO, M.DT_BAIXA, 
        M.DT_VENCIMENTO AS DATA,  M.TIPO_DC, C.NOME AS CLIENTE, M.HISTORICO, M.NUM_DOC, 
        I.VALOR, CT.DESCRICAO AS CONTA, GP.DESCRICAO AS GRUPO,
        GP.TIPO, CT.COD_CONTA, GP.COD_GRUPO_RD

from TBL_ITENS_MOV I
INNER JOIN TBL_MOVIMENTO M ON (I.CH_COD_MOVIMENTO = M.COD_MOVIMENTO)
INNER JOIN TBL_CONTAS CT ON (CT.COD_CONTA = I.CH_COD_CONTA)
LEFT JOIN TBL_GRUPO_RD GP ON (GP.COD_GRUPO_RD = CT.CH_COD_GRUPO_RD)
INNER JOIN TBL_CLIENTE C ON (C.CODIGO = M.CH_COD_CONTATO)
Responder

14/02/2013

Hugo Henrick

A forma mais lógica que consegui chegar foi esta, mas está trazendo apenas a primeira conta.
Segue a função que monta o arquivo:
procedure TFRel.Exporta_Excel;
var Excel : variant;
    nLinha, vCol, i, vCodMovAnt, vCodConta:Integer;
begin
  if SaveDialog1.Execute
  then begin      //************* EXPORTANTO PARA O EXCEL ******************
     Try
        Screen.Cursor := crHourGlass;
        Excel := CreateOleObject('Excel.Application');
        Excel.Visible := False;
        Excel.Workbooks.Add;

        qryPrincipal.First;
        vCodConta := 0;
        While (Not qryPrincipal.Eof) Do
        begin
        if vCodConta <> qryPrincipalCOD_CONTA.AsInteger then
            begin
              nLinha:=1;
              Excel.WorkBooks[1].Sheets[1].Cells[nLinha,1] := qryPrincipalCONTA.AsString;
              Excel.WorkBooks[1].Sheets[1].Cells[nLinha,2] := qryPrincipalGRUPO.AsString;
              vCodConta := qryPrincipalCOD_CONTA.AsInteger;
            end;
              Excel.WorkBooks[1].Sheets[1].Cells[2,1] := 'Dt. Fat.';
              Excel.WorkBooks[1].Sheets[1].Cells[2,2] := 'Contato';
              Excel.WorkBooks[1].Sheets[1].Cells[2,3] := 'Histórico';
              Excel.WorkBooks[1].Sheets[1].Cells[2,4] := 'Nr. Doc';
              Excel.WorkBooks[1].Sheets[1].Cells[2,5] := 'Valor';
              Excel.WorkBooks[1].Sheets[1].Cells[2,6] := 'Tipo';
              Excel.WorkBooks[1].Sheets[1].Cells[2,7] := 'Dt. Venc.';
              Excel.WorkBooks[1].Sheets[1].Cells[2,8] := 'Dt. Baixa';
              qryPrincipal.Next;


        // Percorre o arquivo ...
        nLinha := 3;
        qryPrincipal.First;
        While (Not qryPrincipal.Eof) Do
          begin
             Excel.WorkBooks[1].Sheets[1].Cells[nLinha,1] := qryPrincipalDT_FATURAMENTO.AsString;
             Excel.WorkBooks[1].Sheets[1].Cells[nLinha,2] := qryPrincipalCLIENTE.AsString;
             Excel.WorkBooks[1].Sheets[1].Cells[nLinha,3] := qryPrincipalHISTORICO.AsString;
             Excel.WorkBooks[1].Sheets[1].Cells[nLinha,4] := qryPrincipalNUM_DOC.AsString;
             Excel.WorkBooks[1].Sheets[1].Cells[nLinha,5] := FormatCurr(Masc_Estoque, qryPrincipalVALOR.AsCurrency);
             Excel.WorkBooks[1].Sheets[1].Cells[nLinha,6] := qryPrincipalTIPO.AsString;
             Excel.WorkBooks[1].Sheets[1].Cells[nLinha,7] := qryPrincipalDATA.AsString;
             Excel.WorkBooks[1].Sheets[1].Cells[nLinha,8] := qryPrincipalDT_BAIXA.AsString;
             INC(nLinha);
             qryPrincipal.Next;

         end;
    end;
   // Salva e Fecha ...
   Excel.Columns.AutoFit;
   Excel.WorkBooks[1].SaveAs(SaveDialog1.FileName);
   Excel.WorkBooks[1].Close;
   Finally
     Screen.Cursor := crDefault;
   End;

  Beep; Beep;
  Messagedlg('Exportação para Excel terminada.',mtInformation,[mbOk],0);

  end;
  qryPrincipal.Close;
 //**************** FIM EXPORTAÇÃO PARA EXCEL
end;
Responder

14/02/2013

Perivaldo Martins

Uma pergunta, no GRID os dados são exibidos como vc deseja? Vc está conseguindo exibi-los no grid agrupados?


Boa sorte e bons códigos!
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar