Bonjour
MSSQL Server 2008 - Delphi7 - SQL Management Studio 2008 - Winddows XP SP3
Composants : ADOConnection, ADOQuery, DataSource
1 2 3 4 5 6
|
ADOQuery1.Active:=false;
ADOQuery1.SQL.Clear;
//Chn = La requête SQL
ADOQuery1.SQL.Add(Chn);
ADOQuery1.Active:=true; |
Les requêtes suivantes sont acceptées dans l'application et renvoient les données :
1 2 3
| SELECT * FROM MaTable
SELECT * FROM MaTable WHERE NoDeSerie = 125
SELECT * FROM MaTable WHERE ID = 8 |
Dans l'application les requêtes suivantes retournent le message d'erreur : "ADOQuery1 : Champ 'ID' non trouvé." où ID est la clé primaire autoincrémentée de la table.
Par contre dans SQL Management Studio 2008 pas de problèmes, l'envoi de la requête provoque bien l'affichage des données.
1 2
| SELECT MAX(NoDeSerie) FROM MaTable
SELECT MAX(NoDeSerie) AS GRAND FROM MaTable |
Ce problème est intermédiaire à une autre question : je fais un
SELECT * FROM MaTable WHERE NoDeSerie = 125
J'obtiens plusieurs enregistrements où le champ NoDeSerie vaut 125
Je veux récupérer le dernier enregistrement (le plus récent) de cette sélection c'est à dire celui dont l'ID (clé primaire autoincrémentée)
est le plus élevé.
d'où une syntaxe (non acceptée bien sur) qui traduit l'idée :
SELECT * FROM MaTable WHERE NoDeSerie = 555 AND ID = MAX(ID)
Donc
1 ère question : pourquoi la requête SELECT MAX(NoDeSerie) FROM MaTable n'est pas acceptée
2 ème question : quelle syntaxe SQL utiliser pour obtenir l'enregistrement le plus récent
Merci de vos réponses
Partager