Probleme access & DELPHI [Résolu]

Signaler
Messages postés
7
Date d'inscription
mardi 2 décembre 2003
Statut
Membre
Dernière intervention
7 mai 2007
-
Messages postés
7
Date d'inscription
mardi 2 décembre 2003
Statut
Membre
Dernière intervention
7 mai 2007
-
Bonjour,

J'ai un probleme concernant delphi et access sur le format de la date.

Voici le code :

begin
Q1.Close;
Q1.SQL.Clear;
Q1.sql.add('SELECT COUNT(refop) from operation ');
Q1.SQL.Add(' WHERE dateop :=y ');
Q1.Params[0].AsString := FormatDateTime('mm/dd/yyyy', Datetimepicker1.Date);
//Q1.Params[0].AsString := ' #01/28/2007# '; // Test Direct
ShowMessage(Q1.Params[0].AsString);
Q1.open;

J'ai beau faire tous les formats avec ou sans '#' a chaque extremité de la date, delphi me renvoie cette erreur :

project1.exe raised exception class EDBEngineError with message'General SQL error.
[Microsoft][Pilote ODBC Microsoft Access] Erreur de syntaxe (operateur absent) dans l'expression 'dateop Pa_RaM000' Process Stopped.

Je galere pas mal depuis un petit moment et j'ai imperativement besoin de la date pour mon projet.

Merci d'avance de m'indiquer une solution.

8 réponses

Messages postés
1154
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
5 avril 2012
2
Bonsoir,

Juste une idée en passant :

Q1.Close;
Q1.SQL.Clear;
Q1.SQL.Add('SELECT COUNT(refop) from operation ');
Q1.SQL.Add('WHERE dateop = ' + QuotedStr(FormatDateTime('yyyy-mm-dd', Datetimepicker1.Date))) ;
Q1.open;

P.S. Je n'ai rien, mais alors rien testé  

Cordialement.
<hr />"L'imagination est plus importante que le savoir." Albert Einstein

Et si tu faisais DateToStr(Datetimepicker1.Date)
Messages postés
7
Date d'inscription
mardi 2 décembre 2003
Statut
Membre
Dernière intervention
7 mai 2007

Non toujours la meme erreur,
Le probleme se situe entre
Q1.SQL.Add(' WHERE dateop :=y ');
ou
Q1.Params[0].AsString := DateToStr(Datetimepicker1.Date)

J'ai toujours la meme erreur qui dit erreur de syntaxe.
J'utilise une base de donnée avec Excel 2007 en mode compatibilité 2003 mais je doute fortement que cela provienne de la base de donnée excel.

J'ai trouvé sur des forums qu'il fallait mettre des # de chaque cotés de la date cependant rien a faire.
Si je mets Q1.Params[0].AsString := ' #01/28/2007# '; toujours pareil.
Je suis desesperé.
Messages postés
7
Date d'inscription
mardi 2 décembre 2003
Statut
Membre
Dernière intervention
7 mai 2007

**Oups c'est pas base de donnée Excel 2007 mais Access 2007.
Vous l'aurez bien compris ^^.
Messages postés
165
Date d'inscription
mercredi 8 octobre 2003
Statut
Membre
Dernière intervention
10 novembre 2008

Salut,

De quel type est déclaré ton champs 'dateop' dans ta base. Texte ? ou Date ?
Je pense que ton problème viens de la.

Bon Prog
Messages postés
38
Date d'inscription
vendredi 2 mai 2003
Statut
Membre
Dernière intervention
9 décembre 2009

Salut

j'utilise pas access mais dans ton expression sql (WHERE dateop :=y) le
:= me semble étonnant ainsi que le 'y' d'ailleurs

mais bon access n'est pas ma tasse de thé

@+
Messages postés
7
Date d'inscription
mardi 2 décembre 2003
Statut
Membre
Dernière intervention
7 mai 2007

Concernant dateop, je l'ai déclaré en texte ou en date, j'ai effectué les 2 tests et ca ne change rien.
J'ai testé directement avec un objet query en mettant une requete SQL et ca passe super bien.
WHERE dateop = #01/01/2007#.

C'est dès que j'utilise une variable pour ma date que les choses ne vont plus.

Pers , concernant (WHERE dateop := y ) delphi analyse le := en tant que parametre
d'où le :
Q1.Params[0].AsString := DateToStr(Datetimepicker1.Date) où Q1.Params[0] designe y.

Je ne suis pas as de la prog delphi mais vraiment pas un débutant non plus ^^.
C'est une situation bizzare où j'arrive pas à effectuer des opérations sur les dates alors que j'ai précédement jamais eu de probleme. D'où Votre aide !.

Merci
Messages postés
7
Date d'inscription
mardi 2 décembre 2003
Statut
Membre
Dernière intervention
7 mai 2007

Exactement ca merci beaucoup.
En passant par un parametre delphi n'arrive pas a interpreter correctement la variable date.
J'étais borné a utiliser le parametre
J'ai compris la leçon !