problema em Realtorio

Delphi

19/10/2007

Olá pessoal estou com um problema aqui no meu ulrimo relatorio logo no ultimo esta acontecendo isso...

tipo tenho um relatorio master detal aonde o mesmo m mostra os dados q um determinado cliente comprou em uma dterminada data...

a minah estrutura esta mostanda assim:

procedure TFrmRel_PedidosDetalhado.FormCreate(Sender: TObject);
begin
   ADO_PedidosItens.Open;
   
   Flutuante1 :=0;
   Flutuante2 :=0;

   QrParametro.Caption :=´Periodo de entrega: ´+FrmRelPedidos.MskDataIni.Text+´  -  ´+FrmRelPedidos.MskDataFim.Text;
   DataIni :=StrToDate(FrmRelPedidos.MskDataIni.Text);
   DataFim :=StrToDate(FrmRelPedidos.MskDataFim.Text);

   // montar script da tabela Mestre
   sqlMaster  :=´´;
   sqlMaster  :=sqlMaster  + ´ SELECT  A.*, B.CODIGO, B.NOME ´;
   sqlMaster  :=sqlMaster  + ´ FROM ´;
   sqlMaster  :=sqlMaster  + ´ ORCAMENTOS A,  CLIENTES B ´;
   sqlMaster  :=sqlMaster  + ´ WHERE ´;
   sqlMaster  :=sqlMaster  + ´ B.CODIGO=A.CLIENTE ´;
   sqlMaster  :=sqlMaster  + ´ AND ´;
   sqlMaster  :=sqlMaster  + ´ A.ENTREGA>=:Data1 AND A.ENTREGA<=:Data2 ´;

   if FrmRelPedidos.RdPedidos.ItemIndex=0 then
   Begin
      QrParametro.caption :=QrParametro.caption+´     -     (Todos os tipos)´;
   
   End;

   if FrmRelPedidos.RdPedidos.ItemIndex=1 then
   Begin
      QrParametro.caption :=QrParametro.caption+´     -     (Abertos)´;
      sqlMaster  :=sqlMaster  + ´ AND ´;
      sqlMaster  :=sqlMaster  + ´ A.STATUS=´´N´´ ´;
   End;

   if FrmRelPedidos.RdPedidos.ItemIndex=2 then
   Begin
      QrParametro.caption :=QrParametro.caption+´     -     (Cancelados)´;
      sqlMaster  :=sqlMaster  + ´ AND ´;
      sqlMaster  :=sqlMaster  + ´ A.STATUS=´´C´´ ´;
   End;

   if FrmRelPedidos.RdPedidos.ItemIndex=3 then
   Begin
      QrParametro.caption :=QrParametro.caption+´     -     (Faturados)´;
      sqlMaster  :=sqlMaster  + ´ AND ´;
      sqlMaster  :=sqlMaster  + ´ A.STATUS=´´S´´ ´;
   End;

   sqlMaster  :=sqlMaster  + ´ ORDER BY  ´+OrdemDados;

   ADO_Pedidos.Close;
   ADO_Pedidos.SQL.clear;
   ADO_Pedidos.SQL.Add( sqlMaster );
   ADO_Pedidos.ParamByName(´Data1´).AsDateTime :=DataIni;
   ADO_Pedidos.ParamByName(´Data2´).AsDateTime :=DataFim;
   ADO_Pedidos.Open;

   // visualizar
   QuickRep1.Preview;
   close;

end;



so que ele so m esta mostrando um cliente com seus produtos ele m mostra o pedido de numero 3 so esse com seus produtos...

Estou usando o Qreport e componente ZEOs fias as ligações entra tabelas mas contimia dessa forma...


Tchucky

Tchucky

Curtidas 0

Respostas

Mayron Cachina

Mayron Cachina

19/10/2007

cara n entendi muito bem oq vc quer fazer... mais acho que o erro está no SQL...

vc está comparando
 sqlMaster  :=sqlMaster  + ´ B.CODIGO=A.CLIENTE ´; 


esse campo cliente e esse campo codigo o que são?


GOSTEI 0
Dr. Interbase

Dr. Interbase

19/10/2007

Faltou parenteses

sqlMaster :=sqlMaster + ´( A.ENTREGA>=:Data1 AND A.ENTREGA<=:Data2 )´;


GOSTEI 0
Tchucky

Tchucky

19/10/2007

Ja coloquei
sqlMaster :=sqlMaster + ´( A.ENTREGA>=:Data1 AND A.ENTREGA<=:Data2 )´;


e nada so aparece um cliente com seu determinados produtos e o mais curioso q ele pega um cliente do meio da tabela...

sqlMaster  :=sqlMaster  + ´ B.CODIGO=A.CLIENTE ´; 


esses dois campos são da tabela de pedidos q eu estou fazendo a referencia sendo q eu tenho os mesmos campos na tabela de Intens

para fazer o relacionamento entre as duas tabelas....


GOSTEI 0
Mayron Cachina

Mayron Cachina

19/10/2007

entao eh um PK e outro FK? sao do tipo integer os 2 né?
eui to achando estranho (pelo menos a nomenclatura...costumo colocar IDTABELA) :D
se for nesse estado o sql ta certo... n sei pq n ta retornando certo...


GOSTEI 0
Tchucky

Tchucky

19/10/2007

Os campos são dessa forma mesmo um PK e outro FK sao do tipo integer os 2...

mas o mais estranho é q so pega dois cadastras tipo eu tenho 50 cadastro ele so esta m mostrando 2... mas mesmo assim naum esta certo pq se eu colocar uma data tipo 02/02/2000 a 10/10/2007 ele so m mostra 1 sendo que teria q m mostrar os dois...

desses 50 cadastros ele so m mostra o 3º e o 1º sendo q tenho varias cadastros entre esses....


GOSTEI 0
Mayron Cachina

Mayron Cachina

19/10/2007

qual é o banco e como está sendo apresentada as datas???
tipo os bancos aceitam a data nesse formato ano-mes-dia

ex: 2007-10-19


GOSTEI 0
Tchucky

Tchucky

19/10/2007

estou usando firebird...

e o formato é 02/02/2000 esse mesmo...

o engraçado que quando eu tiro a outra tabela do master detals ele me mostra todos os clientes perfeitamente...

mas quando eu faço a ligação com a tabela itens ai começa a fazer dessa forma so ma da um cliente...


GOSTEI 0
Weber

Weber

19/10/2007

Tente mudar seu select.

SELECT  A.*, B.CODIGO, B.NOME FROM ORCAMENTOS A
LEFT JOIN CLIENTES B ON A.CLIENTE = B.CODIGO 
WHERE A.ENTREGA>=:Data1 AND A.ENTREGA<=:Data2 



GOSTEI 0
Wanderok

Wanderok

19/10/2007

Execute esta query em seu banco de dados para ver o que está retornando.
E vá acertando até os dados aparecerem da forma como deseja.
Somente quando estiver tudo correto é que deverá tratar o relatório.
No relatório, é comum linkar errado os datasets.
veja se dá certo assim.


GOSTEI 0
POSTAR