cs_benyou
Messages postés3Date d'inscriptionmardi 13 août 2002StatutMembreDernière intervention22 août 2002
-
13 août 2002 à 19:15
feubi
Messages postés20Date d'inscriptionmercredi 23 avril 2008StatutMembreDernière intervention29 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
cs_benyou
Messages postés3Date d'inscriptionmardi 13 août 2002StatutMembreDernière intervention22 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+
zefri
Messages postés33Date d'inscriptionsamedi 1 juin 2002StatutMembreDernière intervention11 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à :
cs_benyou
Messages postés3Date d'inscriptionmardi 13 août 2002StatutMembreDernière intervention22 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
aminaloubna
Messages postés1Date d'inscriptionmardi 13 avril 2004StatutMembreDernière intervention28 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