Test date avec requete

cs_benyou Messages postés 3 Date d'inscription mardi 13 août 2002 Statut Membre Dernière intervention 22 août 2002 - 13 août 2002 à 19:15
feubi Messages postés 20 Date d'inscription mercredi 23 avril 2008 Statut Membre Dernière intervention 29 octobre 2016 - 7 déc. 2008 à 16:47
bonjour,
si qlq un peut m'aider, je m'arrive pas à executer une requeque SQL qui fait le test sur la date que j'ai saisie dans un formulaire el le champs dans la bd. je vous informe que j'utilse une connexion ODBC qui es la suivant

strConnect = "Provider=MSDASQL.1;Persist Security Info=False;User ID=sa;Data Source=BASEDON"
Set cnMabase = New ADODB.Connection
cnMabase.Open strConnect, "sa", ""
Set Matable = New ADODB.Recordset

Ma requete est la suivante :
Matable.Open " select * from mouv where mtnhtl<> 0.00 and datefact = MaDate ", cnMabase

apres execution de la requete je recoi le message suivant:

erreur :'2147217900(80040e14)
[Simba][Simba ODBC Driver] erreur in expression:MaDate

Merci

8 réponses

keopsk Messages postés 96 Date d'inscription jeudi 18 avril 2002 Statut Membre Dernière intervention 9 mars 2007
13 août 2002 à 20:51
Pouer commencer MaDate est une variable. il faut donc qu'il soit traduite par sa valeur dans la chaîne sql

.. " select * from mouv where mtnhtl<> 0.00 and datefact = " & MaDate , ..

Faite les conversion si nécessaire

@+
0
keopsk Messages postés 96 Date d'inscription jeudi 18 avril 2002 Statut Membre Dernière intervention 9 mars 2007
13 août 2002 à 20:51
Pouer commencer MaDate est une variable. il faut donc qu'il soit traduite par sa valeur dans la chaîne sql

.. " select * from mouv where mtnhtl<> 0.00 and datefact = " & MaDate , ..

Faite les conversions si nécessaire

@+
0
cs_benyou Messages postés 3 Date d'inscription mardi 13 août 2002 Statut Membre Dernière intervention 22 août 2002
15 août 2002 à 11:22
Bonjour keopsk et merci de me repondre.
j'ai converti ma chaine en date mais ce ne donne rien. ( je t'informe que c'est pas une base access parceque la syntax n'accept pas le signe #, c'est une connexion ODBC)
merci et a+
0
zefri Messages postés 33 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 11 décembre 2002
21 août 2002 à 21:12
Les formats de date posent souvent des problèmes lorsque l'on veut interroger une base de données ! Il faut toujours avoir à l'esprit que la requête telle que tu l'exécute ici est une chaine de caractère non typée. La base de donnée va essayer d'éxécuter littéralement "select * from mouv where mtnhtl<> 0.00 and datefact = MaDate ", et forcément comme MaDate, elle ne sait pas ce que c'est, ça plante.
Je ne connais pas exactement la syntaxe pour SQLServer, mais sous Oracle pour que ta requête fonctionne il faudrait que tu code un truc du genre

Matable.Open " select * from mouv where mtnhtl<> 0.00 and To_Char(datefact, 'DD/MM/YYYY') = " & format(MaDate, 'dd/mm/yyyy')

C'est à dire qu'il faut que tu convertisses la valeur de ta variable et cellle de la colonne que tu veux tester en une chaine de caractère de même format pour que la base de donnée puisse l'interprêter correctement.

Tu me dira que mtnhtl<> 0.00 ne pose pas de problème dans ton cas, c'est que là SQL fait la conversion tout seul comme un grand, mais tu n'es pas là non plus à l'abris d'une surprise, parceque rien ne te dis que le symbole décimal est la virgule sur ton serveur, auquel cas ça plantera aussi.

L'autre solution est d'utiliser l'objet commande et la collection parameters, avec une syntaxe du genre MaCommande.comandtext "select * from mouv where mtnhtl<> ? and datefact ? "
puis ajouter deux paramètres (typés) à ta collection parameters, puis l'éxécuter. J'ai sauté quelques étapes, mais si tu veux un exemple précis, tu peux jeter un oeil là :

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/mdconcommandparams.asp

C'est sûr ça fait beaucoup de code, mais il est en béton.

Bon courage !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_benyou Messages postés 3 Date d'inscription mardi 13 août 2002 Statut Membre Dernière intervention 22 août 2002
22 août 2002 à 12:21
bonjour zefri et merci de tes conseil

je t'informe que depuis le temps que j'ai posté ce message j'ai reussie à surmenter le probleme date parcequ'il falait ecrire dans la requete : dtfact = '" & Format(DateDE.Text, "yyyy-mm-dd") & "'
en ce qui concerne les chiffre decimal je vais voir sur l'adress que tu as proposé. je t'achere de t'informer de l'evolution de mon projet pacrceque jusque la j'ai un probleme avec msflexgrid et je suis entrain d'arracher les cheveaux pour la faire soumettre à ma loi

merci pour tout et a+ [SD]
0
aminaloubna Messages postés 1 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 28 avril 2004
28 avril 2004 à 10:54
je me suis connectée à une base de données sql server à partir de vb mais en cas où je change de serveur est-ce que je vais avoir des problèmes dans l'application
0
feubi Messages postés 20 Date d'inscription mercredi 23 avril 2008 Statut Membre Dernière intervention 29 octobre 2016
7 déc. 2008 à 16:47
moi aussi 'ai le meme probleme avec access si vous pouvez me donner la syntaxe pour access je vous serai reconnaissant
merci d'avance
0
feubi Messages postés 20 Date d'inscription mercredi 23 avril 2008 Statut Membre Dernière intervention 29 octobre 2016
7 déc. 2008 à 16:47
moi aussi 'ai le meme probleme avec access si vous pouvez me donner la syntaxe pour access je vous serai reconnaissant
merci d'avance
0
Rejoignez-nous