SQL - parameter not found
Pessoal,
Tenho:
1 sqlconnection
1 sqlquery
1 datasetprovider
1 cds
1 datasource
Já olhei no forum pessoas que tiveram o mesmo problema, porém aplicando as soluções indicadas não funciona.
BD: FIREBIRD1.5, dialect 3
(Há alguma incompatibilidade do dialect 3 ? )
DM.qTemp.close;
DM.qTemp.SQL.Clear;
DM.qTemp.Add(´SELECT * FROM tabela´);
DM.qTemp.Add(´WHERE altura =: p_altura´);
DM.qTemp.params.parseSql(DM.qTemp.SQL.Text,true);
DM.qTemp.ParamByName(´p_altura´).value:=´170´;
DM.qTemp.open;
Ocorre a msg: parameter ´p_altura´ not found
Tenho:
1 sqlconnection
1 sqlquery
1 datasetprovider
1 cds
1 datasource
Já olhei no forum pessoas que tiveram o mesmo problema, porém aplicando as soluções indicadas não funciona.
BD: FIREBIRD1.5, dialect 3
(Há alguma incompatibilidade do dialect 3 ? )
DM.qTemp.close;
DM.qTemp.SQL.Clear;
DM.qTemp.Add(´SELECT * FROM tabela´);
DM.qTemp.Add(´WHERE altura =: p_altura´);
DM.qTemp.params.parseSql(DM.qTemp.SQL.Text,true);
DM.qTemp.ParamByName(´p_altura´).value:=´170´;
DM.qTemp.open;
Ocorre a msg: parameter ´p_altura´ not found
N1
Curtidas 0
Melhor post
Mobius One
18/09/2013
Altura deve ser um campo numérico, e você está passando um string pra ele. Tente assim:
[code:1:80fe894dc0]DM.qTemp.close;
DM.qTemp.SQL.Clear;
DM.qTemp.Add(´SELECT * FROM tabela WHERE altura = :p_altura´);
DM.qTemp.ParamByName(´p_altura´).AsInteger := 170;
DM.qTemp.open; [/code:1:80fe894dc0]
[code:1:80fe894dc0]DM.qTemp.close;
DM.qTemp.SQL.Clear;
DM.qTemp.Add(´SELECT * FROM tabela WHERE altura = :p_altura´);
DM.qTemp.ParamByName(´p_altura´).AsInteger := 170;
DM.qTemp.open; [/code:1:80fe894dc0]
É só mudar no SQLDataSet acrescentar um Params antes de ParamByName:
DM.qTemp.ParamByName(p_altura).asinteger := 170; --> DM.qTemp.Params.ParamByName(p_altura).asinteger := 170;
Só fazer isso daí que funfa, tava dando esses pepinos comigo também mas achei essa solução por aí no fórum e deu certo.
GOSTEI 1
Mais Respostas
Rjun
21/09/2005
Não sei se foi um erro de digitação, mas o correto seria:
DM.qTemp.Add(´WHERE altura = :p_altura´);
GOSTEI 0
N1
21/09/2005
Rjun
Mesmo fazendo esta alteração continua o erro.
Mesmo fazendo esta alteração continua o erro.
GOSTEI 0
Rjun
21/09/2005
Veja se assim funciona:
DM.qTemp.close; DM.qTemp.SQL.Clear; DM.qTemp.Add(´SELECT * FROM tabela WHERE altura = :p_altura´); DM.qTemp.ParamByName(´p_altura´).value := ´170´; DM.qTemp.open;
GOSTEI 0
Rjun
21/09/2005
Veja se assim funciona:
DM.qTemp.close; DM.qTemp.SQL.Clear; DM.qTemp.Add(´SELECT * FROM tabela WHERE altura = :p_altura´); DM.qTemp.ParamByName(´p_altura´).value := ´170´; DM.qTemp.open;
GOSTEI 0
Rjun
21/09/2005
Veja se assim funciona:
DM.qTemp.close; DM.qTemp.SQL.Clear; DM.qTemp.Add(´SELECT * FROM tabela WHERE altura = :p_altura´); DM.qTemp.ParamByName(´p_altura´).value := ´170´; DM.qTemp.open;
GOSTEI 0
N1
21/09/2005
Ainda continua a mesma msg de erro
GOSTEI 0
Rjun
21/09/2005
Em que linha dispara o erro?
GOSTEI 0
N1
21/09/2005
O erro ocorre em:
DM.qTemp.ParamByName(´p_altura´).value:=´170´;
DM.qTemp.ParamByName(´p_altura´).value:=´170´;
GOSTEI 0
Isabelct
21/09/2005
Altura deve ser um campo numérico, e você está passando um string pra ele. Tente assim:
DM.qTemp.close; DM.qTemp.SQL.Clear; DM.qTemp.Add(´SELECT * FROM tabela WHERE altura = :p_altura´); DM.qTemp.ParamByName(´p_altura´).AsInteger := 170; DM.qTemp.open;
GOSTEI 0
N1
21/09/2005
Não adiantou. Será que há alguma outra opção a ser alterada no BD ?
GOSTEI 0
Rjun
21/09/2005
Bom, essa pode ser uma solução meio esotérica, mas tente ai. Apague todo esse trecho e apague tambem o compomente qTemp. Compile seu programa. Depois, crie de novo o componente e reescreva o trecho de código que você apagou.
GOSTEI 0
N1
21/09/2005
Rjun,
Fiz o q vc escreveu e não funcionou.
Tentei em outra máquina e tb não funcionou.
Fiz o q vc escreveu e não funcionou.
Tentei em outra máquina e tb não funcionou.
GOSTEI 0
Silviogs
21/09/2005
Olá amigo
DM.qTemp.close;
DM.qTemp.SQL.Clear;
DM.qTemp.Add(´SELECT * FROM tabela´);
DM.qTemp.Add(´WHERE altura =: p_altura´); errado
existe um espaço depois dos : ^
correto seria:
DM.qTemp.Add(´WHERE altura =:p_altura´); correto
DM.qTemp.params.parseSql(DM.qTemp.SQL.Text,true);
DM.qTemp.ParamByName(´p_altura´).AsString:=´170´;
DM.qTemp.open;
caso o campo seja numérico o AsString faz a conversão.
desta forma não aparecerá o erro de parametro não encontrado
´Ocorre a msg: parameter ´p_altura´ not found´
Atenciosamente
Silvio Guedes
DM.qTemp.close;
DM.qTemp.SQL.Clear;
DM.qTemp.Add(´SELECT * FROM tabela´);
DM.qTemp.Add(´WHERE altura =: p_altura´); errado
existe um espaço depois dos : ^
correto seria:
DM.qTemp.Add(´WHERE altura =:p_altura´); correto
DM.qTemp.params.parseSql(DM.qTemp.SQL.Text,true);
DM.qTemp.ParamByName(´p_altura´).AsString:=´170´;
DM.qTemp.open;
caso o campo seja numérico o AsString faz a conversão.
desta forma não aparecerá o erro de parametro não encontrado
´Ocorre a msg: parameter ´p_altura´ not found´
Atenciosamente
Silvio Guedes
GOSTEI 0
N1
21/09/2005
Agora está funcionando.
Obrigado a todos que ajudaram.
Obrigado a todos que ajudaram.
GOSTEI 0
Rjun
21/09/2005
O que você fez pra funcionar?
GOSTEI 0