Fórum Como imprimir conteudo DBgrid #244082

22/07/2004

0

Estou usando um componente DBgrid para mostrar o resultado de um filtro de query. O proecesso de filtrar na query demora cerca de 2 minutos por causa da quantidade de dados do DB. Gsotaria de saber como faço para imprimir no Quick report o conteudo filtrado que está no DBgrid ?


Reginaldo174

Reginaldo174

Responder

Posts

22/07/2004

Paulo_amorim

Olá

Se o DBGrid está mostrando, então a Query já está aberta...

Ligue o QR à query e imprima pelo DataSet...

Espero que ajude
Até+


Responder

Gostei + 0

22/07/2004

Reginaldo174

o Grid foi montado via programação conforme determinada pesquisa realizada via Query. A query filtrada só possui parte dos registro do grid.
Então teria que imprimir realmente o Dbgrid, ou seja pegar linha por linha e coluna por coluna e jogar no QuickRep1. Sabe como fazer isto ?


Responder

Gostei + 0

09/04/2006

Vagner.oliveira

o Grid foi montado via programação conforme determinada pesquisa realizada via Query. A query filtrada só possui parte dos registro do grid. Então teria que imprimir realmente o Dbgrid, ou seja pegar linha por linha e coluna por coluna e jogar no QuickRep1. Sabe como fazer isto ?



É exatamente isso que gostaria de fazer. Como pegar todos os dados de um DBGRid e por para imprimi-los no quick report?


Responder

Gostei + 0

10/04/2006

Paullsoftware

vc pode criar uma tabela temporária com os dados do dbgrid e depois liga o QR a mesma. Um vez tive que fazer isso a um tempo atrás não tenho o código mais essa é uma ideia


Responder

Gostei + 0

10/04/2006

Renato.pavan

o Grid foi montado via programação conforme determinada pesquisa realizada via Query. A query filtrada só possui parte dos registro do grid. Então teria que imprimir realmente o Dbgrid, ou seja pegar linha por linha e coluna por coluna e jogar no QuickRep1. Sabe como fazer isto ?


Colega, eu criei um DBGrid herdeiro do DBGrid padrao do delphi q tem esse recurso, ele imprime os dados do grid em FortesReport alem de outros recursos, caso queira te envio o componente mas vc precisa de ter o Fortes Instalado tambem.
Abaixo a rotina que usei pra imprimir com Fortes, creio que com poucas alterações vc consiga adaptar para o quick.

procedure TRPDBGrid.MontaRptFortes;
var
  i,
  posicao : Integer;
  coluna,
  titulo,
  subTitle: TRLLabel;
  campo   : TRLDBText;
begin
  posicao := 5;
  if DataSource = nil then Exit;
  FortesReport := TFortesReport.Create(nil);
  try
    with FortesReport do
    begin
      RLReport.DataSource := DataSource;
      if Report.Title <> ´´ then
      begin
        titulo := TRLLabel.Create(FortesReport);
        titulo.Font := FReport.FFontTitle;
        titulo.Align := faCenterTop;
        titulo.Parent := RLTitle;
        titulo.Caption := FReport.Title;
        titulo.Left := 0;
      end
      else
        RLTitle.Visible := False;
      if Report.SubTitle <> ´´ then
      begin
        subTitle := TRLLabel.Create(FortesReport);
        subTitle.Font := FReport.FFontSubTitle;
        subTitle.Align := faCenter;
        subTitle.Parent := RLSubTitle;
        subTitle.Caption := FReport.SubTitle;
        subTitle.Top := 3;
        subTitle.Left := 0;
      end
      else
        RLSubTitle.Visible := False;
      for i := 0 to pred(Columns.Count) do
      begin
        coluna := TRLLabel.Create(FortesReport);
        coluna.Parent := RLColumnHeader;
        coluna.Caption := Columns[i].Title.Caption;
        coluna.Top := 3;
        coluna.Left := posicao;
        coluna.Font.Style := [fsBold];
        campo := TRLDBText.Create(FortesReport);
        campo.Parent := RLDetail;
        campo.DataSource := DataSource;
        campo.DataField := Columns[i].Field.FieldName;
        campo.Left := posicao;
        campo.Top := 2;
        campo.Font.Size := 8;
        posicao := posicao + Columns[i].Width;
      end;
      RLReport.Preview;
    end;
  finally
    FortesReport.Free;
    FortesReport := nil;
  end;
end;



Responder

Gostei + 0

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

Aceitar