Rechercher : dans
Par :

Requete SQL de comparaison de date: HELP

Dernière réponse le 2 oct 2008 à 19:57:07 sfeltan, le 2 fév 2007 à 09:34:12 
 Signaler ce message aux modérateurs

Voila, je travaille sur un projet, une simulation de gare SNCF. Mon problème est le suivant: J'ai une base de donnée ACCESS avec une table Trains qui contient pas mal d'infos sur les trains prévus, dont notament les horraires de départ de chaque train...
Ce que je veux faire c'est afficher sur un programme C++ (fait sous BUILDER 3), par le biais de requêtes SQL, les trains dont l'heure est a supérieure ou égale à l'heure système actuelle.
Voila, si quelqu'un aurait une idée, ça fait quelques heures que je fouine sur le net, je trouve pas grand chose...

Merci d'avance...

Configuration: Windows XP
Firefox 2.0.0.1

Meilleures réponses pour « Requete SQL de comparaison de date: HELP » dans :
SQL - Sous-requêtes VoirExpression des sous-requêtes Effectuer une sous-requête consiste à effectuer une requête à l'intérieur d'une autre, ou en d'autres termes d'utiliser une requête afin d'en réaliser une autre (on entend parfois le terme de requêtes en...
Exécution de requêtes avec JDBC VoirExécution d'une requête SQL Pour exécuter une requête SQL, il s'agit dans un premier temps de créer un objet Statement, pouvant être obtenu à partir de l'objet Connection. Un objet ResultSet permettra de récupérer les données en provenance de...

1

blux, le 2 fév 2007 à 10:00:23

Salut,

ton problème se situe à quel niveau ?

SQL ou C++

Parce qu'en SQL, tu testes la date du jour avec now().

SELECT toto FROM tab WHERE Madate >= formatdatetime(Now() ,0);
A+ Blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"

Répondre à blux

2

sfeltan, le 2 fév 2007 à 11:39:11

Le hic c'est que Builder plante quand j'arrive à la requete SQL. En fait le code c++ donne ceci:

Query4->Close();
Query4->SQL->Clear();
Query4->SQL->Add("SELECT * UPDATE Train SET Depart = 'Autorisé' WHERE HDepart<=#15:00:00#");
Query4->ExecSQL();

La partie C++ est bonne (sinon il y aurait une erreur de compilation), c'est la requéte qui foire (car j'ai essayé des requetes de base comme écrire dans le champ Depart de toutes les lignes et ça marchait).

Bon je viens de tester ce que tu m'a donné. Plantage:
"Le projet a provoqué une classe d'exception EBDEngineError avec le message 'Erreur SQL générale. [Microsoft][Pilote ODBC Microsoft ACCESS] Fonction 'formatdatetime' non définie dans l'expression"

Répondre à sfeltan

3

blux, le 2 fév 2007 à 11:44:26

Ta syntaxe SQL n'est pas bonne !

C'est SELECT ou UPDATE, mais pas les deux en même temps...
A+ Blux

 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"

Répondre à blux

4

sfeltan, le 5 fév 2007 à 14:19:03

Voila ma requéte actuelle:

UPDATE Train SET Depart = 'Autorisé' WHERE HDepart > formatdatetime(Now(),0)

L'erreur:
Le projet a provoqué une classe d'exception EBDEngineError avec le message 'Erreur SQL générale. [Microsoft][Pilote ODBC Microsoft ACCESS] Fonction 'formatdatetime' non définie dans l'expression

Répondre à sfeltan

5

Laurent, le 5 jun 2007 à 13:11:40

Bonjour,

J'ai le meme probleme, la requete fonctionne parfaitement depuis Access.

Par contre depuis un script vbs en utilisant ODBC, il dit que le fonction FormatDateTime n'est pas definie.

Si quelqu'un a une idée

d'avance merci

Répondre à Laurent

6

laurent, le 9 jun 2007 à 14:02:10

Je me reponds a moi meme :

il faut utiliser date() et time() dans access et non now(), cela evite d'avoir a utiliser Formatdatetime()

pas trouver de methode sinon

Répondre à laurent

7

 ludo96x, le 2 oct 2008 à 19:57:07

Voici ta réponse,

Fonctionne en requête SQL sous Access, pas testé sous Builder mais il n'y a aucune raison pour que ça ne fonctionne pas.

WHERE (((table.jour)<DateSerial(Hour(Now()),Minute(Now()),Second(Now()))))


En complément voici comment procéder si tu voudrais que ta condition soit supérieur à aujourd'hui
WHERE (((table.jour)>DateSerial(Year(Now()),Month(Now()),Day(Now()))))

Répondre à ludo96x