problema em Realtorio
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:
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...
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
Curtidas 0
Respostas
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
esse campo cliente e esse campo codigo o que são?
vc está comparando
sqlMaster :=sqlMaster + ´ B.CODIGO=A.CLIENTE ´;
esse campo cliente e esse campo codigo o que são?
GOSTEI 0
Dr. Interbase
19/10/2007
Faltou parenteses
sqlMaster :=sqlMaster + ´( A.ENTREGA>=:Data1 AND A.ENTREGA<=:Data2 )´;
sqlMaster :=sqlMaster + ´( A.ENTREGA>=:Data1 AND A.ENTREGA<=:Data2 )´;
GOSTEI 0
Tchucky
19/10/2007
Ja coloquei
e nada so aparece um cliente com seu determinados produtos e o mais curioso q ele pega um cliente do meio da tabela...
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....
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
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...
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
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....
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
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
tipo os bancos aceitam a data nesse formato ano-mes-dia
ex: 2007-10-19
GOSTEI 0
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...
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
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
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.
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