Dúvida de SQL - Somente para Feras - Continua a dúvida

Delphi

12/02/2003

Boa tarde a todos
Veja abaixo que estou fazendo 06 chamada no Banco de Dados ACCESS para preencher meu cadastro de clientes
,gostaria de saber como faço para fazer somente uma chamada..
Eu tente fazer desta forma : Dm.Qr_Cliente.sql.text := ´Select Cli.*, Pfis.* ´+
´From TabCliente Cli, TabPes_Fisica Pfis´+
´Where cli.Cod_Vendedor = : MkVendedor.Text´+
´and cli.Cod_Cidade = :MkCidade.Text´+
´and cli.Cod_Area = :MkArea.Text´+
´and cli.Rota_Cliente = :MkRotaCliente´+
´and cli.Cod_cliente = Pfis.Cod_cliente´;
query.parambyname(´MkVendedor.Text´).asstring:=´0´;
query.parambyname(´MkCidade.Text´).asstring:=´0´;
query.parambyname(´MkArea.Text´).asstring:=´0´;
query.parambyname(´MkRotaCliente´).asstring:=´0´;

´´´´´´´´´´´MAIS NÃO DEU CERTO´´´´´´´´


ABAIXO ESTÃO AS SEIS CHAMADAS


Dm.Qr_Cliente.SQL.Clear;
Dm.Qr_Cliente.SQL.Add(´Select * From TabCliente ´);
Dm.Qr_Cliente.SQL.Add(´Where Cod_Vendedor =+´´+(MkVendedor.Text)+´´´);
Dm.Qr_Cliente.SQL.Add(´and Cod_Cidade =+´´+(MkCidade.Text)+´´´);
Dm.Qr_Cliente.SQL.Add(´and Cod_Area =+´´+(MkArea.Text)+´´´);
Dm.Qr_Cliente.SQL.Add(´and Rota_Cliente =+´´+(MkRotaCliente.Text)+´´´);
Dm.Qr_Cliente.Open;


Dm.Qr_Pes_Juridica.SQL.Clear;
Dm.Qr_Pes_Juridica.SQL.Add(´Select * From TabPes_Juridica ´);
Dm.Qr_Pes_Juridica.SQL.Add(´Where Cod_Cliente=+´+inttostr(dm.Qr_ClienteCod_Cliente.Value)+´´);
Dm.Qr_Pes_Juridica.Open;

Dm.Qr_Socios.SQL.Clear;
Dm.Qr_Socios.SQL.Add(´Select * From TabSocio´);
Dm.Qr_Socios.SQL.Add(´Where Cod_Cliente=+´+inttostr(dm.Qr_ClienteCod_Cliente.Value)+´´);
Dm.Qr_Socios.Open;

Dm.Qr_Ref_Pes.SQL.Clear;
Dm.Qr_Ref_Pes.SQL.Add(´Select * From TabRef_Pes ´);
Dm.Qr_Ref_Pes.SQL.Add(´Where Cod_Cliente=+´+inttostr(dm.Qr_ClienteCod_Cliente.Value)+´´);
Dm.Qr_Ref_Pes.Open;

Dm.Qr_Ref_Com.SQL.Clear;
Dm.Qr_Ref_Com.SQL.Add(´Select * From TabRef_Com ´);
Dm.Qr_Ref_Com.SQL.Add(´Where Cod_Cliente=+´+inttostr(dm.Qr_ClienteCod_Cliente.Value)+´´);
Dm.Qr_Ref_Com.Open;

Dm.Qr_Ref_Ban.SQL.Clear;
Dm.Qr_Ref_Ban.SQL.Add(´Select * From TabRef_Ban ´);
Dm.Qr_Ref_Ban.SQL.Add(´Where Cod_Cliente=+´+inttostr(dm.Qr_ClienteCod_Cliente.Value)+´´);
Dm.Qr_Ref_Ban.Open;


AGRADEÇO MUITO SE ALGUEM ME AJUDAR!!

JELVES


Jelves

Jelves

Curtidas 0

Respostas

Fabio Colli

Fabio Colli

12/02/2003

Você tem que fazer JOIN´S com estas tabela, Likar as chaves primárias,
na cláusula WHERE coloque
código.tabela = código.tabala <os códigos tem que ser iguais nas duas tabelas> não sei se deu para entender. Assim você consegue obter campos de mais de uma tabela.

EXEMPLO:
Você tem uma tabela ALUNOS e uma tabela MATRICULAS
na tabela ALUNOS existem NOME_ALUNO, ENDERECO, TELEFONE e na tabela MATRICULAS existe o COD_MATRICULA, gostaria de obter o nome e endereco do aluno que tem matricula 3578, mas como consigo isto se são tabela diferente? Na tabela ALUNOS existe COD_ALUNO<PK(CHEVA PRIMÁRIA)> ne tabela MATRICULAS existe também COD_ALUNO<FK(CHAVE ESTRANGEIRA)>, o SQL ficaria assim;

SELECT M.COD_MATRICULA, A.NOME_ALUNO, A.ENDERECO
FROM ALUNOS A, MATRICULAS M
WHERE A.COD_ALUNO = M.COD_ALUNO
AND M.COD_MATRICULA = 3578

acho que deu para ajudar.
Valeu


GOSTEI 0
POSTAR