Problemas com Pesquisa!

Delphi

12/05/2008

Tenho três tabelas que formam minha venda:

Tabela 1
Orcto

Numero - Integer
DataOrcto - Varchar
CodCli - Varchar
Cliente - Varchar

Tabela 2
PagtoOrcto

Codigo - Integer
NumOrcto - Integer
Data - Varchar
Valor - Varchar
TipoPagto - Varchar

Tabela 3
ItemOrcto

Codigo - Integer
NumOrc - Integer
Item - Varchar
Medida - Varchar
Qtde - Integer

Preciso realizar uma pesquisa de Pagamentos Pendentes por Cliente e por Período, ou seja, preciso casar as informações da tabela 2 e tabela 1 e ainda mostrar os itens referente(Os Itens é fácil, mas os pendentes é q está me dando trabalho:

Revendo a questão, para cada Venda vários pagamentos, 1xn

tenho q filtrar a tabela pagamento por período, porém relacionadas a apenas um cliente, sendo q a informação do cliente está na tabela de Orçamento, tentei de várias formas e não consegui obter o resultado que preciso, lembrando que, tenho já montada a pesquisa por período que funciona perfeitamente, apenas preciso de uma ajuda para casar as duas informações.

Agradeço Antecipadamente!


Tatiane.interart

Tatiane.interart

Curtidas 0

Respostas

Pestana_

Pestana_

12/05/2008

como é que você sabe quais são os pagamentos que estão pendentes?



flw.


GOSTEI 0
Tatiane.interart

Tatiane.interart

12/05/2008

Bem, quando os pagamentos de parcelas são efeituados eles são excluídos da tela e incluídos no caixa, portanto, apenas fica em visualização os pagamentos que ainda não foram efetuados.


GOSTEI 0
Mahdak

Mahdak

12/05/2008

SELECT A.Codigo as CodPagto, A.NumOrcto as NumOrcPatgo, A.Data as DataPagto, A.Valor as ValorPagto, A.TipoPagto asTipoPagto, B.DataOrcto as dataOrcto, B.CodCli as CodCli, B.Cliente As Cliente, C.NumOrc as NumOrcItem, C.Item as Item, C.Medida as Medida, C.Qtde as Qtdade  FROM Orcto A, PagtoOrcto B, ItemOrcto C WHERE (C.NumOrc = A.Numero ) and (B.NumOrcto = A.Numero ) and (A.DataOrcto = :DataOrcto) and A.Cliente like :Cliente


voce pode usar algo tipo a sql acima em um sqlDataSet, provider, clientdataset, e datasource no seu formulario coloque dois edits um botao e um dbgrid ligado ao datasource.

adicione os Tfields no sqlDataSet, os TFields e parametros no ClientDataSet

no OnClick do botao fassa:

with ClientDataSet do
begin
close;
params[0].asstring := editDATA.text;
params[1].asstring := editCLIENTE.text;
open;
end;

creio que algo desse tipo poderia lhe ajudar, porém se voce tiver um tempinho, de uma procurada em como criar aplicaçoes mestre / detalhe, que voce irá descomplicar tudo isso....

abraços!


GOSTEI 0
Tatiane.interart

Tatiane.interart

12/05/2008

Pois é, Mahdak essa sua opção parece muito boa, mas creia-me já havia tentado algo assim e não obtive o resultado esperado, tentei fazer similar ao relatório mestre-detalhe que é também mto parecido com esse seu código SQL, mas também não funcionou, quando consigo o período vem referente a todos os pagamentos cadastrados dentro deste período e não filtra por cliente e quando consigo por cliente, traz todos os orçamentos relacionados a este cliente independente de data de vencimento.
Ressalto até q tentei várias formas de pesquisa e não consegui sucesso em nenhuma delas! Se alguém puder me dar uma luz em relação a isso, agradeço!


GOSTEI 0
Mahdak

Mahdak

12/05/2008

qual o banco que vc usa? firebird?
quais os componentes de acesso ao banco? dbx?
voce relaciona os campos de chave estrangeira?

minha sugestao é voce reformular a estrutura de suas tabelas para que se enquadrem em uma aplicação master detail... acredite, passei por problemas a algum tempo, e a melhor soluçao que encontrei foi desenvolver dentro do conceito de mestre / detalhe.

para começar eis um artigo: http://www.firebase.com.br/fb/artigo.php?id=299

procure na internet ou aqui no forum mesmo, se voce tem acesso a video aulas da dev media, se nao me engano tem uma do everson volaco muito boa, que da mastigado como fazer o negócio...

boa sorte, e bons estudos!
abraços!


GOSTEI 0
Tatiane.interart

Tatiane.interart

12/05/2008

É resolvi seguir seu conselho e redimensionar minha tabela, consegui fazer o que precisava sem muita dor de cabeça!

Valeu a dica


GOSTEI 0
POSTAR