QR Dinâmico c/ agrupamento

Delphi

25/10/2006

Olá pessoal
Tenho um RxMemoryData assim:
Campo1 Campo2
Descrição1 20
Descrição1 30
Descrição1 40
Descrição2 25
Descrição2 35
Descrição2 40
Descrição2 45
Descrição1 12
E preciso de um relatório assim:
Descrição1
20 30 40 12

Descrição2
25 35 40 45

Como só conseguir fazer relatório de grupo no QR e D7 com DataSet local, coloquei outro RX no QR, segue código:

procedure TForm1.BitBtn1Click(Sender: TObject);
var
iLinha, iColuna, iBase, iLargura: Integer;
vLabel: TQRLabel;
sDescricao : String;
begin
Screen.Cursor := crHourGlass;

QuickReport1 := TQuickReport1.Create(Self);
QuickReport1.QrRx.SortOnFields(´Descricao´);
QuickReport1.QrRx.Open;
RxMemoryData.First;
while not RxMemoryData.Eof do
begin
QuickReport1.QrRx.Append;
QuickReport1.QrRxDescricao.AsString := RxMemoryDataDescricao.AsString;
QuickReport1.QrRxValor.AsFloat := RxMemoryDataValor.AsFloat;
QuickReport1.QrRx.Post;
RxMemoryData.Next;
end;

iLargura := 77;
iLinha := 0;
iColuna := 0;
iBase := 0;

QuickReport1.QrRx.First;
sDescricao := QuickReport1.QrRxDescricao.AsString;
while not QuickReport1.QrRx.Eof do
begin
// if sDescricao <> QuickReport1.QrRxDescricao.AsString then
// begin
sDescricao := QuickReport1.QrRxDescricao.AsString;
// Next;
// Continue;
// end;

vLabel := TQRLabel.Create(QuickReport1);
vLabel.Name := ´vLabel´ + IntToStr(QuickReport1.QrRx.RecNo);
vLabel.Left := (iLargura * iColuna);
vLabel.Top := (21 * iLinha) + 4;
vLabel.Width := iLargura;
vLabel.Alignment := taRightJustify;
vLabel.Caption := FormatFloat(´,#0.00´, QuickReport1.QrRxValor.AsFloat);
vLabel.Parent := QuickReport1.DetailBand1;
iBase := 1;
inc(iColuna);

if QuickReport1.QrRx.RecNo mod 9 = 0 then
begin
inc(iLinha);
iColuna := 0;
iBase := 0;
end;

QuickReport1.QrRx.Next;
end;

QuickReport1.DetailBand1.Height := (21 * (iLinha + iBase)) + 4;
Screen.Cursor := crDefault;

QuickReport1.Preview;
QuickReport1.Free;
end;


Nigro

Nigro

Curtidas 0

Respostas

Nigro

Nigro

25/10/2006

up


GOSTEI 0
Nigro

Nigro

25/10/2006

Obrigado mesmo assim, fiz o relatório cross tab no qr, na mão mesmo


GOSTEI 0
Motta

Motta

25/10/2006

atrasado .....

Uma vez isto gerando uma function (no bd) que retorna a lista requerida numa string.

gero um cursor
do tipo select campo2 from tabela where campo1 = ....
concateno cada linha do cursor numa string até o fim dste
a funtion retorna esta string

mas o bd deve suportar functions


GOSTEI 0
Motta

Motta

25/10/2006

atrasado .....

Uma vez isto gerando uma function (no bd) que retorna a lista requerida numa string.

gero um cursor
do tipo select campo2 from tabela where campo1 = ....
concateno cada linha do cursor numa string até o fim dste
a funtion retorna esta string

mas o bd deve suportar functions


GOSTEI 0
Nigro

Nigro

25/10/2006

Valeu pela atenção Motta, mas Paradox é assim mesmo...
(eca..)
Ai o pessoal fala: ´Credo Nigro... Trabalhando com Paradox...´, pois é... Vai dizer para o cara da lojinha, do consultório, da papelaria, do acçougue, ou seja todo esse pessoal que só tem um micro, que ele tem que colocar um servidor dedicado ou comprar um micro mais rápido, só por causa do banco...
é a vida...


GOSTEI 0
POSTAR