Problemas com Pesquisa!

12/05/2008

1

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!


Responder

Posts

12/05/2008

Pestana_

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



flw.


Responder
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.


Responder

12/05/2008

Mahdak

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!


Responder
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!


Responder

12/05/2008

Mahdak

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!


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

Valeu a dica


Responder
×
+1 DevUP
Acesso diário, +1 DevUP
Parabéns, você está investindo na sua carreira