Dúvida de SQL - Somente para Feras - Continua a dúvida
12/02/2003
0
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
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
Curtir tópico
+ 0
Responder
Posts
12/02/2003
Fabio Colli
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
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
Responder
Clique aqui para fazer login e interagir na Comunidade :)