Requête paramétrée, variable 'not found'
Bonjour, je crée plusieurs applications avec Lazarus (2.2.2) et SQLite (sqlite3.dll 3.36.0) ,
et je suis tombé sur le problème suivant :
- je crée une requête d'update paramétrée avec un identifiant "UP1x"
- j'ajoute évidemment le paramètre lors de la procédure d'update, et je recois le message
"Le projet 'projet' a levé une classe d'exception "EDatabaseError'
avec le message : Parameter "UP1x" not found à l'adresse..." (fenêtre assembleur)
Ce que je ne comprends évidemment pas c'est que dans un autre projet j'ai exactement
les mêmes procédures et que ça marche sans problème...???
Récupérer le SQL (abrégé)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
function foUpdate_Irl(pTable : string) : string;
begin
case pTable of
'sites' : Result := 'UPDATE sites SET id:=UP1x, mail:=UP2x, site:=UP3x,' +
'...,note:=UP8x,lien:=UP9x '+
'WHERE lignes:= UP0x' ;
end;
end; |
Procédure d'update (abrégée)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
procedure TFormIrl.su_TableUpdate(pSQL : string);
begin
ConnIrl.Close;
QueryIrl.SQL.Clear;
QueryIrl.SQL.Text := pSQL;
QueryIrl.Params.BeginUpdate;
QueryIrl.Params.ParamByName('UP1x').AsString := up1;
QueryIrl.Params.ParamByName('UP2x').AsString := up2;
QueryIrl.Params.ParamByName('UP3x').AsString := up3;
...
QueryIrl.Params.ParamByName('UP8x').AsString := up8;
QueryIrl.Params.ParamByName('UP9x').AsString := up9;
QueryIrl.Params.ParamByName('UP0x').AsString := up0;
QueryIRl.Params.EndUpdate;
QueryIrl.ExecSQL;
TransacIrl.Commit;
end; |
vos idées et suggestions sont évidemment les bienvenues
et ne vous étonnez pas si je ne réponds pas très vite, je suis
en déplacement...
merci d'avance.