Erreur dans une requête paramétrée
Bonjour à toutes et à tous.
Ma configuration : Windows 10; Lazarus 2.0.6 sur FPC 3.0.4
Le programme sert à manipuler des normes NF, EN et ISO.
Un DataModule est créé dans le fichier programme par :
Code:
Application.CreateForm(TModuleDonnees, ModuleDonnees);
Ce DataModule est composé d'un TPQConnection et d'un TSQLTransaction qui sont initialisés grâce à cette procedure :
Code:
1 2 3 4 5 6 7 8 9 10 11
| procedure TModuleDonnees.DataModuleCreate(Sender: TObject);
begin
ConnexionPQ.DatabaseName := 'aaaaaaa';
ConnexionPQ.UserName := 'postgres';
ConnexionPQ.HostName := 'localhost';
ConnexionPQ.Password := 'xxxxxxx';
//ConnexionPQ.Connected := true; Automatique lors d'un SQLQuery.Open
ConnexionPQ.Transaction := TransactionSQL;
TransactionSQL.DataBase := ConnexionPQ;
//TransactionSQL.Active := true; Automatique lors d'un SQLQuery.Open
end; |
Jusque là tout fonctionne dans l'utilisation de ce module de données par d'autres fiches. Une nouvelle fiche sert à modifier le répertoire de sauvegarde des normes. Sur cette fiche sont déposés un TDBText, qui rappelle le répertoire actuel de sauvegarde à partir d'une requête dans la base de données (cela fonctionne), un TEdit où l'utilisateur précise le nouveau répertoire de sauvegarde et un TButton qui valide le changement et ferme la fiche. Voici le code de ce bouton sans le contrôle de la non nullité du TEdit :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| RN := TSQLQuery.Create(nil);
SN := TDataSource.Create(nil);
RN.Database := ModuleDonnees.ConnexionPQ;
SN.DataSet := RN;
RN.UpdateSQL.Text := 'UPDATE s_ent.t_e_norme_nor SET nor_repertoire=:REP;';
RN.Params.ParamByName('REP').AsString := ENouveauRepertoire.Text;
SN.Enabled := true;
RN.Active := true;
RN.ExecSQL;
ModuleDonnees.TransactionSQL.Commit;
RN.Close;
ModuleDonnees.TransactionSQL.Active := false;
ModuleDonnees.ConnexionPQ.Connected := false;
Close; |
La compilation s'effectue sans sourciller mais à l'utilisation l'erreur suivante surgit :
Citation:
Le projet Normes a levé une classe d'exception 'EDatabaseError' avec le message :
Parameter "REP" not found.
Erreur qui apparaît aussi en lançant le programme par Normes.exe.
Votre aide est donc sollicitée pour résoudre ce problème et je vous remercie à l'avance de me dépanner.
Michel.