Bonjour,
Je travaille sur une application qui interagit sur des bases de données de type access (.mdb) par le biais des composants TSession, TDataBase, TTable et TQuery
Dans ma table (crée sous ACCESS) je possède :
- un champ DateMes de type Date/Heure au format Date,abrégé
- un champ HeureMes de type Date/Heure au format Heure,abrégé.
- d'autres champs....
La syntaxe que j'ai utilisée pour ajouter un enregistrement qui contiendra des valeurs pour DateMes et HeureMes est celle là :
Cette requete fonctionne et crée bien mon enregistrement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 AnsiString Requete = "INSERT INTO MESURES (DateMes,HeureMes,AcEC1) VALUES ('22/10/09','23:50',123456)" this->Query->SQL->Add(Requete); this->Query->ExecSQL();
Par contre quand je désire mettre à jour cet enregistrement par cette syntaxe :
mon application génère une exception EDBEngineError avec le message 'Erreur SQL Générale : Type de données incompatibles dans l'expression du critère'
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 AnsiString Requete = "UPDATE MESURES SET AcEC1=654321 WHERE DateMes='22/10/09' AND HeureMes='23:50'"; this->Query->SQL->Add(Requete); this->Query->ExecSQL();
Si je remplace les conditions sur DateMes et HeureMes dans le WHERE par un champ de type Entier par exemple "WHERE AcEC2=0" (AcEC2 type entier) cela fonctionne parfaitement.
Apparemment la condition sur une date ou une heure avec la syntaxe que j'ai utilisée ne fonctionne pas ou n'est pas possible....
Si quelqu'un a une idée sur mon problème n'hésitez pas !!
Partager