Ir para conteúdo

POWERED BY:

Arquivado

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

Tatiane.InterArt

Relatório usando duas tabelas filhas sem usar tabela mãe

Recommended Posts

Em um relatório semanal de Contas a Pagar, tendo três tabelas, a mãe q é a ContasPagar e duas filhas q são FormaPagto e ItemContPag, preciso gerar um relatório semanal de contas a pagar.

O filtro de pesquisa está perfeito, neste relatório preciso imprimir as tabelas FormaPagto e ItemConPag.

na FormaPagto tenho CodForn, CodContaPg, DataVenc, Valor e Tipo

na ItemContPag tenho CodContaPg, Itens, Qtde.

 

no meu QuickRep tenho três IBQuerys

IB1 FormaPagto

IB2 ItemContPag

IB3 Fornecedor

 

estou usando bands separadas pois meu gerente quer que apareça uma linha separando e por conta dos itens também.

 

então, meu QuickRep está ligado ao IB1, tenho um DataSource ligado a ele também, e o IB2 ligado ao DataSource.

 

Quando imprimo estou usando as seguintes linhas:

FrmImpRelContPag:=TFrmImpRelContPag.Create(Self);

FrmImpRelContPag.IBQuery1.Close;

FrmImpRelContPag.IBQuery1.SQL.Clear;

FrmImpRelContPag.IBQuery1.SQL.Add('Select * from PagtoContaPg '+Pes+'order by Data');

FrmImpRelContPag.IBQuery1.Open;

 

FrmImpRelContPag.IBQuery2.Close;

FrmImpRelContPag.IBQuery2.SQL.Clear;

FrmImpRelContPag.IBQuery2.SQL.Add('Select * from ItemContPag where CodContPag='''+FrmImpRelContPag.IBQuery1CodOrc.Value+'''');

FrmImpRelContPag.IBQuery2.Open;

 

FrmImpRelContPag.IBQuery3.Close;

FrmImpRelContPag.IBQuery3.SQL.Clear;

FrmImpRelContPag.IBQuery3.SQL.Add('Select * from Fornec where CNPJ='''+FrmImpRelContPag.IBQuery1CodForn.Value+'''');

FrmImpRelContPag.IBQuery3.Open;

 

FrmImpRelContPag.QuickRep1.Preview;

 

então, não aparece o nome do fornecedor e os itens saem repetidos, alguém poderia me dar uma dica de como posso fazer isso funcionar?

 

 

ahnnn esqueci de colocar acima que não estou usando a tabela mãe para este relatório, pois neste caso ela não vai me servir de nada!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tatiane,

 

seus itens estão saindo repetidos pelo fato de você não ter colocado a tabela Pai(você muito feminista diz tabela mãe rs.. brikdera pra descontrair)...

 

pois dela para as filhas, você vai ter relacionamento 1 pra N, e entre as filhas o relacionamento para a ser N pra N

 

Coloca a tabela mae que isso resolve.

 

quanto ao nome do fornecedor, pode nao estar saindo pois você esta buscando por CNPJ, que é mais dificil para tal fim. na base pode estar o cnpj sem a formatação e no FrmImpRelContPag.IBQuery1CodForn.Value pode estar indo com a formatação... na dá pra fazer essa busca por código, que estaria na tabela pai????

 

Mais uma coisa, nao lido e nem gosto de Interbase/ Firebird, mas você nao precisa de 3 Ibquerys pra fazer tal pesquisa, basta apenas 1 com todo o codigo SQL!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, antes estava fazendo isso, usando a tabela pai(mãe) como achar melhor rsrsrsrsrs.

o que acontecia é que por cada fornecedor, se tivesse por exemplo vencimento dia 01/01/08 e 10/01/08 e filtrasse período de 10 dias, ficaria por exemplo assim:

 

Fornecedor: DELMONT

Itens:

Verniz Oracal

Verniz Perfurado

Verniz Transparente

 

Data Valor

01/01/08 30,00

10/01/08 25,00

 

Fornecedor: MPEL

Itens:

Sulfite

 

Data Valor

01/01/08 12,00

 

e não pode ficar assim, preciso que fique por data, mesmo que repita novamente o fornecedor e itens teria q ficar assim:

 

Fornecedor: DELMONT

Itens:

Verniz Oracal

Verniz Perfurado

Verniz Transparente

 

Data Valor

01/01/08 30,00

 

Fornecedor: MPEL

Itens:

Sulfite

 

Data Valor

01/01/08 12,00

 

Fornecedor: DELMONT

Itens:

Verniz Oracal

Verniz Perfurado

Verniz Transparente

 

Data Valor

10/01/08 25,00

 

compreendeu? tem que ser tudo o q há de um dia, depois tudo o que há do outro e assim por diante!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas Tatiane,

 

isso você acerta no seu quick report, usando o qrGroup!!!

 

Usa 1 qrgroup e nele você coloca a expression dele com o seu campo data. nesta banda, coloque tb 1 dbedit pra mostrar a data.

 

e no detail você coloca as outras info!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nunca trabalhei com QRGroup, nem sei por onde começar, e pra variar, meu campo data na tabela é do tipo string, pois não consegui declarar ele como Date nem DateTime no InterBase, sempre dava erro no momento de salvar, então, tive que declarar como string e converter para data no momento da pesquisa.

Além de não saber usar a band QRGroup ainda tem mais esse detalhe...

Compartilhar este post


Link para o post
Compartilhar em outros sites

o qrgroup é um componente, tá na paleta Qreport.

 

ele vai ficar no seu quick como uma banda qualquer.

 

ae você vai na propriedade expression dele e coloca o nome do seu campo data. na banda grgroup, coloque tb 1 dbedit pra mostrar a sua data.

 

e na banda detalhe você mostrar os outros dados

 

Fornecedor: DELMONT

Itens:

Verniz Oracal

Verniz Perfurado

Verniz Transparente

 

etc...

 

o quick vai fazer exatamente o q você quer.

 

eh o chamado relatorio mestre-detalhe.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, mas ela esta ficando acima das bands Detail e ainda assim, agora só aparece uma das datas do filtro data, os itens corretos apenas referente a esta e não aparece o nome do Fornecedor... nossa ta ficando cada vez mais confuso...

Compartilhar este post


Link para o post
Compartilhar em outros sites

bem, se é o que estou pensando, acho q sim...

neste caso teria q ser tipo

IBQuery1Data.Value que é o nome do campo que preciso!

ao menos foi isso q consegui compreender, me corrija se estiver errada!

 

Bem qualquer coisa, se achar melhor te add no msn assim posso te mandar com mais detalhe o que estou fazendo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

não não...

 

coloca o nome do campo mesmo...

 

se o campo for dt_lancamento, escreve dt_lancamento

 

não não...

 

coloca o nome do campo mesmo...

 

se o campo for dt_lancamento, escreve dt_lancamento

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha ta do mesmo jeito, até pior pois está repetindo um único item várias vezes...

 

aparece apenas uma data e o primeiro item referente repetido bem umas 5 vezes e nada do nome do fornecedor e nada dos QRLabels que coloquei de identificação, parece que a cada minuto fica pior e antes o unico problema q tinha era q não aparecia o Fornecedor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

o problema não pode ser este, uso até 5 IBQuerys em algumas tabelas que tem relacionamento tipo Mãe - Filhas ou Pai - Filhos huahuahua pra não ser feminista...

realmente acredito que não estou sabendo lidar com este componente, aprendi fazer relatórios tipo pai-filho usando Bands Detail e SubDetail, com a IBQuery principal ligada no QuickRep e em um DataSource, e as demais IBQuerys necessárias para as tabelas filhos ligadas a este DataSource e as Bands SubDetails ligadas às IBQuerys referentes...

e é como estava fazendo antes, porém sem usar a tabela pai é claro, pois afinal na minha tabela FormaPagto tem o campo CodForn que é o nº do CNPJ do fornecedor.

por isso estava usando a tabela fornecedor e pegando o CodForn da FormaPagto para trazer o Nome Fantasia da empresa para o relatório, o problema é q ele não aparecia

Compartilhar este post


Link para o post
Compartilhar em outros sites

pessoal, encontrei um exemplo super prático, adaptando à minha necessidade funcionou direitinho, para mim que não sou uma expert em Delphi e não conhecia o componente QRGroup foi uma mão na roda...

rsrsrsrs depois de dar uma quase surtada, agradeço ao Marcelo pela dica.

para quem precisar aí vai o link

 

http://www.activedelphi.com.br/print.php?sid=427

 

Valeu galera!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.