Como imprimir conteudo DBgrid

Delphi

22/07/2004

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

Curtidas 0

Respostas

Paulo_amorim

Paulo_amorim

22/07/2004

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é+


GOSTEI 0
Reginaldo174

Reginaldo174

22/07/2004

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 ?


GOSTEI 0
Vagner.oliveira

Vagner.oliveira

22/07/2004

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?


GOSTEI 0
Paullsoftware

Paullsoftware

22/07/2004

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


GOSTEI 0
Renato.pavan

Renato.pavan

22/07/2004

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;



GOSTEI 0
POSTAR