adoquery : recuperer resultat d'une requete [resolu] - Delphi/Pascal - Programmation
Marsh Posté le 09-05-2005 à 20:58:26
Déjà pour une requête qui renvoie un résultat il faut utiliser Open et non ExecSQL (qui est réservé aux insert, update, etc.)
Ensuite plutôt que d'utiliser FieldByName tu peux utiliser Fields[n] où n est le numéro de la colonne (0 dans ce cas-ci), ça évite les problèmes quand le nom de la colonne du résultat d'un calcul change selon le SGBD.
N'oublie pas de faire un Clear de ta requête SQL avant d'y ajouter chaque fois une ligne (ou alors assigne directement le Text)
En résumé je ferais :
adoquery1.SQL.Text := 'select max(no_cong) from congré';
adoquery1.Open;
no_cong := adotable1.Fields[0].AsInteger;
(et les accents dans les noms de table c'est pas très judicieux comme choix )
Marsh Posté le 11-05-2005 à 23:02:49
le "résolu" il faut le mettre à la fin du titre, ou alors pas entre [ ], sinon ça cache le nom de la sous-cat
Marsh Posté le 09-05-2005 à 17:19:31
bonjour
j'ai une table congré(no_cong,.....)
je veux recuperer le max des no_cong dans une variable, et voila ce que j'ai fait(je suis debutant):
adoquery1.sql.add('select max(no_cong) from congré');
adoquery1.execsql;
no_cong:=adotable1.fieldbyname('no_cong').asinteger;
pas d'erreur, mais le resultat est faux(263 qui est le premier enregistrement au lieu de 264)!!!!
j'ai essaye ensuite
no_cong:=adoquery1.sql.add('select max(no_cong) from congré');
adoquery1.execsql;
cette fois c'est 0
et puis encore une fois
adoquery1.sql.add('select max(no_cong) from congré');
no_cong:=adoquery1.execsql;
et c'est toujours 0
et pour finir j'ai tester
adoquery1.sql.add('select max(no_cong) as resultat from congré');
no_cong:=adoquery1.fieldbyname('resultat').asinteger;
mais cette fois c'est le champs 'resultat' qui n'existe pas(ça c'est normal je pense).
merci de m'aider sur ce point
Message édité par let_me_in le 11-05-2005 à 23:03:00