Ir ao conteúdo
  • Cadastre-se

Dúvida com Relatório no QuickReports do Delphi 7


DaniLeal

Posts recomendados

Olá pessoal,

Estou começando a trabalhar com Delphi e estou tendo alguns probleminhas para gerar um relatório durante a execução do meu programa.

Bom, a ideia do programa é que seja gerado um relatório a partir dos itens selecionados de uma listBox. Consegui fazer grande parte, mas quando o relatorio é criado, ao invés de mostrar todos os registros do BD, mostra somente o primeiro registro. Alguém poderia me ajudar a descobrir o erro que não encontrei? O Código é o seguinte:

[B]procedure TFrmMenu.GerarClick(Sender: TObject);
var
i, Col, Tamc:integer;
NCampo,Ordem:String;
begin

//Verificamos se existem Campos Selecionados
if Listbox2.Items.Count > 0 then
begin

// Posição inicial da coluna
Col := 5;

// Informamos o Titulo do Relatório

FrmRelatorios.QRLabel2.Caption := Edit1.Text;

for i := 0 to listbox2.Items.Count -1 do
begin

//Obtendo o Tamanho e Nome do Campo
Tamc:= Largura[PosCampo(ListBox2.Items.Strings[i])]; //tamanho do campo
NCampo:= Campo[PosCampo(ListBox2.Items.Strings[i])];//nome do campo

//Criando Componentes Para os Títulos das Colunas
QrLabel[i+1] := TQrLabel.Create(FrmRelatorios.QuickRep1.Bands.TitleBand);
QrLabel[i+1].Parent:= FrmRelatorios.QuickRep1.Bands.TitleBand;
QrLabel[i+1].Left:= Col;
QrLabel[i+1].Top:= 4;
QrLabel[i+1].Caption:= ListBox2.Items.Strings[i];
QrLabel[i+1].Font.Style := [fsbold];

//Criando Componentes de Exibição de Dados das Colunas

begin
QrDbtext[i+1]:= TQrDbtext.Create(FrmRelatorios.QuickRep1.Bands.DetailBand);
QrDbText[i+1].Parent:=FrmRelatorios.QuickRep1.Bands.DetailBand;
QrDbText[i+1].Left:= Col;
QrDbText[i+1].Top:= 8;
QrDbText[i+1].DataSet:= Dm.ADOQuery1;
QrDbText[i+1].DataField:= NCampo;
end;

//Obtendo o Valor da próxima Coluna. Como o valor precisa ser em
//pixel multiplicamos por 5 o tamanho do Campo.
Col := Col + (10 * Tamc);
end;

//Passamos as instruções SQL
Dm.ADOQuery1.Close;
Dm.ADOQuery1.SQL.Clear;
Dm.ADOQuery1.SQL.Add('SELECT Produto.PROD_DS_PRODUTO, Produto.PROD_CD_GRUP, Produto.PROD_CD_SUBGRUP, Produto.PROD_CD_PRODUTO, Produto.PROD_CD_ORIGINAL, Produto.PROD_CD_BARRAS, Produto.PROD_SG_UNID_ENTRADA FROM Produto;');
Dm.ADOQuery1.SQL.Add(Ordem);
Dm.ADOQuery1.Open;

//Chamamos o Relatório
FrmRelatorios.QuickRep1.Preview;

//Liberamos os Componentes utilizados
for i := 0 to listbox2.Items.Count -1 do
begin
QrLabel[i+1].free;
QrDbText[i+1].free;
end;

end;
end;[/B]

Em anexo uma imagem de como fica o relatorio.

Obs: Eu peguei um código pronto na net e fiz alterações para ele se adequar ao que eu queria..:D

Desde já agradeço.

post-690122-13884954859609_thumb.jpg

Link para o comentário
Compartilhar em outros sites

Ah, era isto mesmo, eu havia esquecido de setar o Dataset do QuickRep...Obrigada OvEr_BuRn!

Aproveitando a deixa...tem mais uma parte do código que não consegui montar e queria fazer. Se você puder me dar uma ideia de como começar eu agradeceria mais ainda...

Bom, os itens da minha tabela sao divididos em grupos e subgrupos, reconhecidos pelo código que é de um padrão 999.999.999. Por exemplo, o grupo 001 é capacitor e 001.001 é o subgrupo capacitor eletrolítico e 001.001.001 corresponde ao item em si. Tem uma coluna na tabela com preços e eu queria que aparecesse no relatorio um subtotal por subgrupos e um total depois por grupo, mas não tenho nem ideia de como fazer isto no Delphi e nem sei se tem como. Eu ão consegui nem ordenar pelo código, ja que não é um campo numérico "normal", o SQL nao reconhece um 'Order by', será que tem como fazer?

Eu tinha feito no access, mas não consegui chamar o relatorio no access pelo Delphi.

abraços.

post-690122-13884954932356_thumb.jpg

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...