MSSQL Server 2008 Delphi7 Requêtes SQL acceptées dans SQL Management Studio et refusées dans l'application
Bonjour
MSSQL Server 2008 - Delphi7 - SQL Management Studio 2008 - Winddows XP SP3
Composants : ADOConnection, ADOQuery, DataSource
Code:
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 :
Code:
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.
Code:
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
Code:
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 :
Code:
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
MSSQL Server 2008 Delphi7 Requêtes SQL acceptées dans SQL Management Studio et refusées dans l'application
Des précisions
Après quelques essais le même message d'erreur : "ADOQuery1 : Champ 'ID' non trouvé" apparaît aussi avec une simple requête qui ne demande que l'affichage de certaines colonnes :
SELECT DateDuTest, NoDeSerie FROM MaTable
On obtient une réponse correcte en spécifiant toutes les colonnes, ce qui est équivalent à SELECT *