Fórum Parametros em tempo de Execução #258432

15/11/2004

0

Ola Galera,

estou tentando passar alguns parametros para uma query feita em tempo de execução, mas esta me retornando um erro, que alega que não existe o parametro passado para a query.
Estou usando Access, e conexão ADO, mas este erro tbem acontece no banco MSSQL 2000.
é mais ou menos assim:

var
qry : Tadoquery;
begin
qry := Tadoquery.Create(nil);
try
qry.connection := conexao;
with qry, qry.sql do
begin
close;
clear;
Add(´Select codcli, nome, cpf from Clientes´);
Add(´Where codcli =: Pcodcli and´);
Add(´cpf =:Pcpf´);
Parameters.parambyname(´codcli´).value := strtoint edtCodigo.text);
Parameters.parambyname(´cpf´).value := edtcpf.text);
open;
end;
finally
Showmessage(´Erro na conexão);
end;
end;

Caso alguem possa me ajudar favor encaminhar email para vrsistemas@terra.com.br

como perceberam estou criando a query em tempo de execução, e esta dando de erros nos parametros ´not found codcli´

Desde ja agradeço pela atenção de todos


Vrssoftware

Vrssoftware

Responder

Posts

15/11/2004

Bruno Belchior

isso ocorre pq o parâmetro são os antecedidos de dois pontos (:) e vc está passando os valores para os campos...

var qry : Tadoquery; 
begin 
  qry := Tadoquery.Create(nil); 
  try  
     qry.connection := conexao; 
     with qry, qry.sql do 
       begin 
       close; 
       clear; 
       Add(´Select codcli, nome, cpf from Clientes´); 
       Add(´Where codcli =: Pcodcli and´); 
       Add(´cpf =:Pcpf´); 
     Parameters.parambyname(´:Pcodcli´).value:=strtoint (edtCodigo.text); 
       Parameters.parambyname(´:Pcpf´).value := edtcpf.text; 
      open; 
    end; 
  finally
    Showmessage(´Erro na conexão); 
  end; 
end;

espero ter ajudado...


Responder

Gostei + 0

15/11/2004

Godzilla_xf

Olá não sei c vc percebeu mais esta criando um parametro com um espaço depois do sinal de dois pontos:

Add(´Where codcli =[b:e501dc832e]: Pcodcli[/b:e501dc832e] and´);

tente remover os espaços assim: [b:e501dc832e]where codcli = :Pcodcli[/b:e501dc832e]

espero ter ajudado...


Responder

Gostei + 0

16/11/2004

Godzilla_xf

Olá pode ser tbem a questão da separação dos Parametros tipo:

Add(´Select codcli, nome, cpf from Clientes´);
Add(´Where codcli =: Pcodcli and´);
Add(´cpf =:Pcpf´);

Tente fazer assim:

Add(´Select codcli, nome, cpf from Clientes´);
Add(´Where [b:b75338b7eb](codcli = :Pcodcli)[/b:b75338b7eb] and [b:b75338b7eb](cpf = :Pcpf)[/b:b75338b7eb]´);

Acredito que seje isso.

falow
té +


Responder

Gostei + 0

16/11/2004

Paulo_amorim

Olá

Se seu parâmetro se chama Pcodcli, vc precisa chamá-lo como Pcodcli, e não codcli, como está sendo feito...
O mesmo vale para Pcpf... passe como Pcpf, e não cpf...

Assim, faça

ParamByName(´Pcodcli´).Value := Codigo;
ParamByName(´Pcpf´).Value := CPF;

Espero que ajude
Até+


Responder

Gostei + 0

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

Aceitar