Somente para Feras, a minha dúvida continua, please help

14/02/2003

0

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


Jelves

Jelves

Responder

Posts

14/02/2003

Anonymous

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


Responder

14/02/2003

Jelves

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



Responder

14/02/2003

Anonymous

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


Responder

14/02/2003

Jelves

[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


Responder

14/02/2003

Anonymous

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


Responder

14/02/2003

Anonymous

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


Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar