Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
DaniLeal

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

Recommended Posts

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

Editado por Mog.Lucas
Utilize tags [code]. Leia mais aqui: http://forum.clubedohardware.com.br/tags-code-como/709848

Compartilhar este post


Link para o post
Compartilhar em outros sites

você tem que setar a propriedade dataset do seu QickRep para o dataset que você está usando, e a banda de detalhes tem que estar do tamanho necessário para aparecer os dados de um unico registro.

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×