Test date avec requete

Signaler
Messages postés
3
Date d'inscription
mardi 13 août 2002
Statut
Membre
Dernière intervention
22 août 2002
-
Messages postés
20
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
29 octobre 2016
-
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

Messages postés
96
Date d'inscription
jeudi 18 avril 2002
Statut
Membre
Dernière intervention
9 mars 2007

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
Messages postés
96
Date d'inscription
jeudi 18 avril 2002
Statut
Membre
Dernière intervention
9 mars 2007

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
Messages postés
3
Date d'inscription
mardi 13 août 2002
Statut
Membre
Dernière intervention
22 août 2002

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
Messages postés
33
Date d'inscription
samedi 1 juin 2002
Statut
Membre
Dernière intervention
11 décembre 2002

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
Messages postés
3
Date d'inscription
mardi 13 août 2002
Statut
Membre
Dernière intervention
22 août 2002

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
Messages postés
1
Date d'inscription
mardi 13 avril 2004
Statut
Membre
Dernière intervention
28 avril 2004

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
Messages postés
20
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
29 octobre 2016

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
Messages postés
20
Date d'inscription
mercredi 23 avril 2008
Statut
Membre
Dernière intervention
29 octobre 2016

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