Requête sur champ date [Résolu]

Signaler
Messages postés
270
Date d'inscription
mercredi 14 avril 2004
Statut
Membre
Dernière intervention
5 mai 2015
-
Messages postés
4715
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
-
Bonjour,

Encore une question sur les dates !!!
Voilà quelque temps que je galère sur cette requête et je ne vois pas pourquoi j'ai le message "Type incompatible dans l'expression du critère..."
var Today : Tdatetime;
...

begin
  Today := now;

With DM.qryEnCoursDemain do
  begin
    Close;
    SQL.Clear;
    SQL.Add('Select * from tbl_Evenements ');
    SQL.Add('WHERE Fait False and DateDeb ' + QuotedStr(FormatDateTime('dd/mm/YYYY', today+1)));
    Open;
  end;


DateDeb est un champ d'une table access Date/Heure Format Date, abrégé

Si quelqu'un peut m'aider à avancer, d'avance merci...

Cordialement, codial

7 réponses

Messages postés
270
Date d'inscription
mercredi 14 avril 2004
Statut
Membre
Dernière intervention
5 mai 2015
1
Bonjour cantador,

merci pour ta réponse mais j'ai toujours le même message !!

Ceci dit j'ai fait une requête paramétrée et celà fonctionne normalement.
With DM.qryEnCoursDemain do
  begin
  Close;
  SQL.Clear;
  SQL.Add('Select * from tbl_Evenements WHERE DateDeb=:noDate');
  Parameters.ParamByName('noDate').Value:= DateToStr(today+1);
  open;
  end;


Encore merci
Cordialement, codial
Messages postés
4715
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
12
Bonsoir,
essaie :

---
SQL.Add('WHERE (Fait False) and (DateDeb ' + QuotedStr(FormatDateTime('yyyy/mm/dd', today+1))));



cantador
Messages postés
4715
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
12
je t'avouerai n'avoir pas testé et évidemment dans ce cas c'est pile ou face..

Les formats de date sous acces avec QuotedStr sont assez chatouilleux...
La requête paramétrée que je n' ai pas proposée pour une fois est en général la solution pour s'en sortir..

cantador
Messages postés
270
Date d'inscription
mercredi 14 avril 2004
Statut
Membre
Dernière intervention
5 mai 2015
1
Bonsoir cantador,

merci pour l'aide.

Cordialement, codial
Messages postés
8
Date d'inscription
vendredi 12 décembre 2008
Statut
Membre
Dernière intervention
11 juin 2014
1
En SQL, les dates exprimées sous forme littérale doivent être entre deux caractères #.
Le bon format est donc FormatDateTime('#dd/mm/yyyy#', today+1)

Je ne suis plus très sûr mais je crois qu'il ne faut pas Quoted.
Messages postés
8
Date d'inscription
vendredi 12 décembre 2008
Statut
Membre
Dernière intervention
11 juin 2014
1
Sorry, j'ai tapé trop vite, il faut mettre le mois avant le jour donc
FormatDateTime('#mm/dd/yyyy#',today+1);

nb: J'ai écris des applis qui attaquent des tables Access via ODBC avec cette technique, ça marche très bien.
Messages postés
4715
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
27 mars 2018
12
Je viens de tester et avec une date stockée soit au format texte, soit au format date/heure

effectivement ça marche avec :
FormatDateTime('#mm/dd/yyyy#',today + 1);



merci rozg pour ce rappel..

cantador