Somente para Feras, a minha dúvida continua, please help
Imagine que tenho BD do ACCESS e duas tabelas
TabCliente
TabPes_Fisica
Na minha TabCliente tenho os seguintes campos:
Cod_Cliente (Chave Primaria)
Cod_Vendedor
Cod_Cidade
Cod_Area
Rota_Cliente
Na TabPes_Fisica os Seguintes Campos
Cod_Cliente (Chave primaria)
Nome_Cliente
CPF
Etc...
Uso um Componete Tquery
Preciso fazer uma query que quando eu entrar com os campos
Cod_Vendedor
Cod_Cidade
Cod_Area
Rota_Cliente
ela me traz os dados das duas tabelas.
Veja abaixo
Quando eu precisa que trazesse somente os dados da tab_Cliente, eu utilizava a instrução abaixo e dava tudo certo.
Dm.Qr_Cliente.SQL.Clear;
Dm.Qr_Cliente.SQL.Add(´Select * From TabCliente ´);
Dm.Qr_Cliente.SQL.Add(´Where Cod_Vendedor =+´´+copy(MkRota.Text,(length(MkRota.Text)-10),2)+´´´);
Dm.Qr_Cliente.SQL.Add(´and Cod_Cidade =+´´+copy(MkRota.Text,(length(MkRota.Text)-7),2)+´´´);
Dm.Qr_Cliente.SQL.Add(´and Cod_Area =+´´+copy(MkRota.Text,(length(MkRota.Text)-5),3)+´´´);
Dm.Qr_Cliente.SQL.Add(´and Rota_Cliente =+´´+copy(MkRota.Text,(length(MkRota.Text)-2),3)+´´´);
Dm.Qr_Cliente.Open;
//No MkRota eu digito a rota inteira exemplo: ´00/11/222/333´ no qual eu copio parte para fazer a consulta acima.
A questão é...
Eu utilizo a chamada acima para fazer uma pesquisa somente em uma tabela, como eu faria para fazer a chamada para duas tabela, vou te dar um exemplo abaixo:
Dm.Qr_Cliente.SQL.Clear;
Dm.Qr_Cliente.SQL.Add(´Select Cli.*, Pfis.* From TabCliente Cli, TabPesFisica Pfis´);
Dm.Qr_Cliente.SQL.Add(´Where Cli.Cod_Cliente = Pfis.Cod_Cliente´);// Aqui eu ligo as duas tabelas, o Cod_Cliente existe na duas tabelas.
Dm.Qr_Cliente.SQL.Add(And Cod_Vendedor =+´´+copy(MkRota.Text,(length(MkRota.Text)-10),2)+´´´);
Dm.Qr_Cliente.SQL.Add(´and Cod_Cidade =+´´+copy(MkRota.Text,(length(MkRota.Text)-7),2)+´´´);
Dm.Qr_Cliente.SQL.Add(´and Cod_Area =+´´+copy(MkRota.Text,(length(MkRota.Text)-5),3)+´´´);
Dm.Qr_Cliente.SQL.Add(´and Rota_Cliente =+´´+copy(MkRota.Text,(length(MkRota.Text)-2),3)+´´´);
Dm.Qr_Cliente.Open;
Infelismente esta, está errada, mais é que quando eu buscasse um registro digitando a rota ele trazia para mim os dados da outra tabela..
TabCliente
TabPes_Fisica
Na minha TabCliente tenho os seguintes campos:
Cod_Cliente (Chave Primaria)
Cod_Vendedor
Cod_Cidade
Cod_Area
Rota_Cliente
Na TabPes_Fisica os Seguintes Campos
Cod_Cliente (Chave primaria)
Nome_Cliente
CPF
Etc...
Uso um Componete Tquery
Preciso fazer uma query que quando eu entrar com os campos
Cod_Vendedor
Cod_Cidade
Cod_Area
Rota_Cliente
ela me traz os dados das duas tabelas.
Veja abaixo
Quando eu precisa que trazesse somente os dados da tab_Cliente, eu utilizava a instrução abaixo e dava tudo certo.
Dm.Qr_Cliente.SQL.Clear;
Dm.Qr_Cliente.SQL.Add(´Select * From TabCliente ´);
Dm.Qr_Cliente.SQL.Add(´Where Cod_Vendedor =+´´+copy(MkRota.Text,(length(MkRota.Text)-10),2)+´´´);
Dm.Qr_Cliente.SQL.Add(´and Cod_Cidade =+´´+copy(MkRota.Text,(length(MkRota.Text)-7),2)+´´´);
Dm.Qr_Cliente.SQL.Add(´and Cod_Area =+´´+copy(MkRota.Text,(length(MkRota.Text)-5),3)+´´´);
Dm.Qr_Cliente.SQL.Add(´and Rota_Cliente =+´´+copy(MkRota.Text,(length(MkRota.Text)-2),3)+´´´);
Dm.Qr_Cliente.Open;
//No MkRota eu digito a rota inteira exemplo: ´00/11/222/333´ no qual eu copio parte para fazer a consulta acima.
A questão é...
Eu utilizo a chamada acima para fazer uma pesquisa somente em uma tabela, como eu faria para fazer a chamada para duas tabela, vou te dar um exemplo abaixo:
Dm.Qr_Cliente.SQL.Clear;
Dm.Qr_Cliente.SQL.Add(´Select Cli.*, Pfis.* From TabCliente Cli, TabPesFisica Pfis´);
Dm.Qr_Cliente.SQL.Add(´Where Cli.Cod_Cliente = Pfis.Cod_Cliente´);// Aqui eu ligo as duas tabelas, o Cod_Cliente existe na duas tabelas.
Dm.Qr_Cliente.SQL.Add(And Cod_Vendedor =+´´+copy(MkRota.Text,(length(MkRota.Text)-10),2)+´´´);
Dm.Qr_Cliente.SQL.Add(´and Cod_Cidade =+´´+copy(MkRota.Text,(length(MkRota.Text)-7),2)+´´´);
Dm.Qr_Cliente.SQL.Add(´and Cod_Area =+´´+copy(MkRota.Text,(length(MkRota.Text)-5),3)+´´´);
Dm.Qr_Cliente.SQL.Add(´and Rota_Cliente =+´´+copy(MkRota.Text,(length(MkRota.Text)-2),3)+´´´);
Dm.Qr_Cliente.Open;
Infelismente esta, está errada, mais é que quando eu buscasse um registro digitando a rota ele trazia para mim os dados da outra tabela..
Jelves
Curtidas 0
Respostas
Anonymous
14/02/2003
Tente isso:
Select * From Clientes C, PessoaFis P Where (C.CodCliente = P CodCliente) and ...ACRESCENTE AQUI AS DEMAIS INTRUCOES DE PESQUISA...
_______________________
Ao omitir idéias estaremos...
...Omitindo idéias !?!?
Select * From Clientes C, PessoaFis P Where (C.CodCliente = P CodCliente) and ...ACRESCENTE AQUI AS DEMAIS INTRUCOES DE PESQUISA...
_______________________
Ao omitir idéias estaremos...
...Omitindo idéias !?!?
GOSTEI 0
Jelves
14/02/2003
Tudo bem até que a query eu sei fazer, o problema é como fazer esta chamada no delphi....
Tente isso:
Select * From Clientes C, PessoaFis P Where (C.CodCliente = P CodCliente) and ...ACRESCENTE AQUI AS DEMAIS INTRUCOES DE PESQUISA...
_______________________
Ao omitir idéias estaremos...
...Omitindo idéias !?!?
GOSTEI 0
Anonymous
14/02/2003
Pois bem:
Qual o seu problema - pois não entendi a sua questão ?
_______________________
Ao omitir idéias estaremos omitindo idéias.
Ao troca-las estaremos distribuindo conhecimentos...
Qual o seu problema - pois não entendi a sua questão ?
_______________________
Ao omitir idéias estaremos omitindo idéias.
Ao troca-las estaremos distribuindo conhecimentos...
GOSTEI 0
Jelves
14/02/2003
[quote=´Jairo´]Pois bem:
Qual o seu problema - pois não entendi a sua questão ?
É como colocar está consulta em linhas de código no delphi
eu uso um Tquery
Qr_Clientes
Qr_Pes_Fisica
qdo executo a instrução abaixo no SQL Explorer ela funciona legal
Select Cli.*,Pfis.* From TabCliente Cli, TabPes_Fisica Pfis
Where cli.Cod_Vendedor = ´00´
and cli.Cod_Cidade = ´00´
and cli.Cod_Area = ´000´
and cli.Rota_Cliente = ´111´
and cli.Cod_cliente = Pfis.Cod_cliente
Obrigado
Qual o seu problema - pois não entendi a sua questão ?
É como colocar está consulta em linhas de código no delphi
eu uso um Tquery
Qr_Clientes
Qr_Pes_Fisica
qdo executo a instrução abaixo no SQL Explorer ela funciona legal
Select Cli.*,Pfis.* From TabCliente Cli, TabPes_Fisica Pfis
Where cli.Cod_Vendedor = ´00´
and cli.Cod_Cidade = ´00´
and cli.Cod_Area = ´000´
and cli.Rota_Cliente = ´111´
and cli.Cod_cliente = Pfis.Cod_cliente
Obrigado
GOSTEI 0
Anonymous
14/02/2003
Var vSql: String
Begin
vSql := ´Select Cli.*,Pfis.* From TabCliente Cli, TabPes_Fisica Pfis ´;
vSql := vSql+´ Where cli.Cod_Vendedor = ´+QuotedStr(´00´)+´and ´;
vSql := vSql+´ cli.Cod_Cidade = ´+QuotedStr(´00´)+´ and cli.Cod_Area ´;
vSql := vSql+´ = ´+QuotedStr(´000´)+´ and cli.Rota_Cliente ´;
vSql := vSql+´ = ´+QuotedStr(´111´)+ and cli.Cod_cliente = ´;
vSql := vSql+´ Pfis.Cod_cliente ´;
Query1.Close;
Query1.Sql.Clear;
Query1.Sql.Add(vSql);
Query1.Open;
Variavel := ´Duvida´;
Ao utilizarmos QuotedStr(Variavel), colocamos aspas simples transformando os valores em String...
Podemos utilizar tambem (Aspas Duplas) - ´´Duvida´´
_________________________________________________________
Ao trocar-mos idéias estaremos expandindo nossos conhecimentos...
Begin
vSql := ´Select Cli.*,Pfis.* From TabCliente Cli, TabPes_Fisica Pfis ´;
vSql := vSql+´ Where cli.Cod_Vendedor = ´+QuotedStr(´00´)+´and ´;
vSql := vSql+´ cli.Cod_Cidade = ´+QuotedStr(´00´)+´ and cli.Cod_Area ´;
vSql := vSql+´ = ´+QuotedStr(´000´)+´ and cli.Rota_Cliente ´;
vSql := vSql+´ = ´+QuotedStr(´111´)+ and cli.Cod_cliente = ´;
vSql := vSql+´ Pfis.Cod_cliente ´;
Query1.Close;
Query1.Sql.Clear;
Query1.Sql.Add(vSql);
Query1.Open;
Variavel := ´Duvida´;
Ao utilizarmos QuotedStr(Variavel), colocamos aspas simples transformando os valores em String...
Podemos utilizar tambem (Aspas Duplas) - ´´Duvida´´
_________________________________________________________
Ao trocar-mos idéias estaremos expandindo nossos conhecimentos...
GOSTEI 0
Anonymous
14/02/2003
Var vSql: String
Begin
vSql := ´Select Cli.*,Pfis.* From TabCliente Cli, TabPes_Fisica Pfis ´;
vSql := vSql+´ Where cli.Cod_Vendedor = ´+QuotedStr(´00´)+´and ´;
vSql := vSql+´ cli.Cod_Cidade = ´+QuotedStr(´00´)+´ and cli.Cod_Area ´;
vSql := vSql+´ = ´+QuotedStr(´000´)+´ and cli.Rota_Cliente ´;
vSql := vSql+´ = ´+QuotedStr(´111´)+ and cli.Cod_cliente = ´;
vSql := vSql+´ Pfis.Cod_cliente ´;
Query1.Close;
Query1.Sql.Clear;
Query1.Sql.Add(vSql);
Query1.Open;
Variavel := ´Duvida´;
Ao utilizarmos QuotedStr(Variavel), colocamos aspas simples transformando os valores em String...
Podemos utilizar tambem (Aspas Duplas) - ´´Duvida´´
_________________________________________________________
Ao trocar-mos idéias estaremos expandindo nossos conhecimentos...
Var vSql: String;
begin
vSql := ´Select Cli.*,Pfis.* From TabCliente Cli, TabPes_Fisica Pfis ´;
vSql := vSql+´ Where cli.Cod_Vendedor = ´+QuotedStr(´00´)+´and ´;
vSql := vSql+´ cli.Cod_Cidade = ´+QuotedStr(´00´)+´ and cli.Cod_Area ´;
vSql := vSql+´ = ´+QuotedStr(´000´)+´ and cli.Rota_Cliente ´;
vSql := vSql+´ = ´+QuotedStr(´111´)+´ and cli.Cod_cliente = ´;
vSql := vSql+´ Pfis.Cod_cliente ´;
dm.Qr_Cliente.Close;
dm.Qr_Cliente.Sql.Clear;
dm.Qr_Cliente.Sql.Add(vSql);
dm.Qr_Cliente.Open;
end;
Só ele dá esta mensagem...
´Qr_Cliente: Fild ´Cod_Cliente´ not Found´
Jelves
Obrigado por está me ajudando, devido eu ainda ter muita problema com sintaxe...
GOSTEI 0