SERÁ QUE ALGUÉM SABE???

Delphi

20/03/2003

COMO POSSO FAZER UMA CONSULTA USANDO DOIS PARÂMETROS??
POR EXEMPLO:
O MEU SISTEMA É UM CADASTRO DE ORÇAMENTOS. CADA CLIENTE TEM VÁRIOS DOCUMENTOS. O CLIENTE PODE SER CADASTRADO DUAS OU MAIS VEZES SÓ QUE COM NOMES DE OBRAS DIFERENTES. ENTÃO ESTOU FAZENDO UMA CONSULTA DE DOCUMENTOS, SÓ QUE SE EU PESQUISAR POR CLIENTE E ELE TIVER CADASTRADO UM MESMO CLIENTE 2 VEZES OU MAIS, ELE ME TRARÁ TODOS OS DOCUMENTOS DO CLIENTE, SÓ QUE PRECISO QUE ALÉM DE PESQUISAR POR CLIENTE, EU POSSA PESQUISAR NOS RESULTADOS QUE ELE TROUXE, OS DOCUMENTOS PELO NOME DA OBRA TAMBÉM....

ALGUÉM TEM UMA IDÉIA??

RAFAELA


Rafaela

Rafaela

Curtidas 0

Respostas

Bilouro

Bilouro

20/03/2003

É CONSULTA SQL?
QUAIS CAMPOS VC TEM E QUAIS VC QUER FILTRAR...


[]´S


GOSTEI 0
Okama

Okama

20/03/2003

Select * from ORCAMENTO where CLIENTE = ´nome do cliente´
and DOCUMENTO = ´documento´

É isso???


GOSTEI 0
Rafaela

Rafaela

20/03/2003

É O SEGUINTE...
TENHO UMA TABELA DE ORÇAMENTOS E UMA DE DOCUMENTOS.
CADA ORÇAMENTO TEM UM CLIENTE E VÁRIOS DOCUMENTOS.
QUERO FAZER UMA CONSULTA DE DOCUMENTOS.
SÓ QUE POR EXEMPLO, FIZ UM ORÇAMENTO DE UM CLIENTE O ANO PASSADO (ELE ESTÁ CADASTRADO) E TIVE QUE FAZER OUTRO ORÇAMENTO DO MESMO CLIENTE ESTE ANO. E NO ANO PASSADO ELE TINHA SEUS DOCUMENTOS E NESTE ANO ELE TEM OUTROS. ENTÃO QUANDO FOR FAZER A CONSULTA QUERO CONSULTAR PRIMEIRO POR CLIENTE. QUANDO ELE TROUXER O NOME DO CLIENTE QUE EU PESQUISEI, CONCORDAM QUE ELE VAI TRAZER TODOS OS DOCUMENTOS, TANTO DO ANO PASSADO COMO DESTE ANO. ENTÃO QUERO FAZER UMA OUTRA CONSULTA DENTRO DOS MEUS RESULTADOS BUSCANDO OS DOCUMENTOS PELO NOME DA OBRA. ASSIM EU DIGITO O NOME DA OBRA (QUE TAMBÉM É CADASTRADA NO ORÇAMENTO E NOS DOCUMENTOS) E ELE FILTRA NOVAMENTE SÓ QUE AGORA OS DOCUMENTOS PELA OBRA... ENTENDERAM???
A CONSULTA EU ESTAVA TENTANDO COM O QUERY..


RAFAELA


GOSTEI 0
Leao

Leao

20/03/2003

bom seu eu entedi vc pode fazer o seguinte...

   Query.SQL.Text:=´SELECT clientes.*, orcamentos.* FROM orcamentos INNER JOIN clientes ON clientes.cod = orcamentos.CodCliente´;
   Query.Open;



GOSTEI 0
Rafaela

Rafaela

20/03/2003

O que é inner join?


GOSTEI 0
Aroldo Zanela

Aroldo Zanela

20/03/2003

O que é inner join?


O operador lógico Inner Join retorna cada linha que satisfaça a união da primeira (top) entrada com a segunda (bottom) entrada.

Fui claro?


GOSTEI 0
Bilouro

Bilouro

20/03/2003

LEVANDO EM CONSIDERACAO QUE VC ESTA TRABALHANDO C/ 3 TABELAS
TABELA CLIENTES(COD_CLI CHAVE PRIMARIA, NOME_CLI ...)

TABELA ORÇAMENTOS(COD_ORC, COD_CLI CHAVE CHAVE ESTRANGEIRA, ORCAMENTO...)

TABELA DOCUMENTOS(COD_DOC, COD_ORC CHAVE ESTRANGEIRA, COD_CLI CHAVE CHAVE ESTRANGEIRA, DOCUMENTO...)

SELECT C.COD_CLI, C.NOME_CLI, O.COD_ORC, O.ORCAMENTO, D.COD_DOC, D.DOCUMENTO
FROM CLIENTES C
JOIN ORCAMENTOS O
ON C.COD_CLI = O.COD_CLI
JOIN DOCUMENTOS D
ON O.COD_ORC = D.COD_ORC
WHERE C.NOME_CLI LIKE ´RAFAELA¬´ /*OU WHERE NOME_CLI = ´RAFAELA DOS
SANTOS´ */

IRÁ TE RETORNAR TODOS OS DOCUMENTOS E ORCAMENTOS DE UM CLIENTE...

SELECT C.COD_CLI, C.NOME_CLI, O.COD_ORC, O.ORCAMENTO, D.COD_DOC, D.DOCUMENTO
FROM CLIENTES C
JOIN ORCAMENTOS O
ON C.COD_CLI = O.COD_CLI
JOIN DOCUMENTOS D
ON O.COD_ORC = D.COD_ORC
WHERE C.NOME_CLI LIKE ´RAFAELA¬´ /*OU WHERE NOME_CLI = ´RAFAELA DOS
SANTOS´ */
AND COD_ORC = ´002´

IRÁ RETORNAR OQUE VC QUER...

PS1:
TEM ALGUNS TRUCKS LEGAIS, SE VC FOR EXIBIR EM UM DBGRID, VC PODE FAZER COM QUE O EVENTO ONDBCLIK(CLIQUE DUPLO) RETORNE SÓ OS DOCS DAQUELE ORÇAMENTO...
PS2:
SE VC VAI PESQUISAR 2X DE QQ MANEIRA, DA PRIMEIRA VEZ VC NÃO PRECISA MOSTRAR TODOS OS DOCUMENTOS... FICARIA ASSIM A PRIMEIRA QUERY

SELECT C.COD_CLI, C.NOME_CLI, O.COD_ORC, O.ORCAMENTO
FROM CLIENTES C
JOIN ORCAMENTOS O
ON C.COD_CLI = O.COD_CLI
WHERE C.NOME_CLI LIKE ´RAFAELA¬´ /*OU WHERE NOME_CLI = ´RAFAELA DOS
SANTOS´ */


GOSTEI 0
Bilouro

Bilouro

20/03/2003

QQ DUVIDA...

[]´S


GOSTEI 0
POSTAR