jms20
Messages postés8Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention21 décembre 2005
-
17 nov. 2005 à 11:30
jms20
Messages postés8Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention21 décembre 2005
-
21 nov. 2005 à 14:27
Salut à tous !!
Alors j'ai une petite question concernant VB car j'ai un comportement étrange. Je vous expose mon problème:
- J'ai une procédure stockée sous SQL Serveur 2000 qui à 2 paramètres (date de début et date de fin mais declaré en tant que varchar) et qui renvoie des valeurs
- Lorsque je lance ma procédure stockée sous query analyser avec les paramètres suivant par exemple date de deb: 2001-01-01, date de fin : 2005-05-29, j'ai des valeurs de retournée valide
- Mais lorsque je lance la procédure stockée sous VB avec ces même paramètres, les valeurs retournées sont toute nulle !!
- Par contre lorsque je lance la procédure stockée sous VB avec les paramètres suivant date de deb: 2001-01-01, date de fin : 2005-29-05 (soit les mois et les jours inversé) alors j'obtiens les même resultat que j'ai obtenu lorsque j'ai lancer la procédure stockée sous Query Analyser avec les paramètres date de deb: 2001-01-01, date de fin : 2005-05-29 !!
Quelqu'un a déjà eu un comportement similaire ?? Y a t 'il une explication ?? Est ce que VB transformerait automatiquement les dates bien que mes variables contenant les paramètres d'entrée sont déclaré en String ??
Bref si qq'un pouvait me donner une explication car je dois ensuite déployé l'appli et si le format des dates changent d'un poste à l'autre automatiquement , cela peut être problématique.
Merci d'avance à tous !!
A voir également:
[Comportement VB : Help] Procédure Stockée avec paramètres
jms20
Messages postés8Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention21 décembre 2005 21 nov. 2005 à 14:27
Ca y est c bon g reglé le problème !!
Le traçage m'a pas trop aider car les dates ne changeait pas de format !!
J'ai donc fait un convert datetime au format soiuhaité pour la comparaison et à priori c bon ça marche !!
cs_vpoyo
Messages postés363Date d'inscriptionvendredi 14 février 2003StatutMembreDernière intervention20 avril 20106 17 nov. 2005 à 11:52
J'avais déja eu un tel problème. Et c'est malheuresement le problème de l'internationnalisation, un problème récurrent : format des dates, des chiffres (. ou ,), ....
Essaye de voir dans la configuration de SQLServer si y a pas moyen qu'il prenne en paramètre internationnaux la config french.
Après en déploiement, tu n'as qu'a indiquer comment doit être configurer ton instance de sql Server. sinon tu peux crées des routines qui vont te convertir une date au format string dont tu connais le format en format date au niveau de sql server. Il me semble qu'il y a une fonction du style date(year, month, day)
jms20
Messages postés8Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention21 décembre 2005 17 nov. 2005 à 12:04
Merci de ta réponse, donc tu me confirme que c'est bien un problème de format de date !!
Mais ce que je ne comprends pas c'est que à acun moment je ne declare mes variables (pour les date de debut et date de fin) en tant que date .
En effet dans VB je declare mes variables qui vont contenir mes dates en STRING et dans SQL Serveur je declare les paramètres d'entrées en VARCHAR !! C'est pour ça que je ne comprends pas car mes dates ne devrait pas être interprétées en tant que date mais en tant que string sauf si lorsque j'affecte mes paramètres à la procedure stockée via VB, il les interprete en date !!
cs_vpoyo
Messages postés363Date d'inscriptionvendredi 14 février 2003StatutMembreDernière intervention20 avril 20106 17 nov. 2005 à 12:14
Mais coté sqlserver, même si il recoit des strings, il a besoin de manipuler des dates. et il devra faire la conversion string --> date. Et la seule indication qu'il a c'est les paramètres régionnaux.
Vous n’avez pas trouvé la réponse que vous recherchez ?
aieeeuuuuu
Messages postés698Date d'inscriptionjeudi 16 janvier 2003StatutMembreDernière intervention20 mai 20113 17 nov. 2005 à 15:35
si SQL server recoit les variable string depuis l'analyseur de requete ou depuis VB, il devrait les traiter de la meme facon.
d'ou vient ta variable VB ? est-ce qu'elle est saisie, ou est-ce qu'elle vient d'autre part (c'est peut etre VB qui la tranforme avant ?!?)
essaie de mettre un point d'arret au moment ou tu appelle ta procedure stockee pour voir si les variable on bien les valeur que tu pense
sinon essaie d'utiliser les fonctions de conversion de date sous VB et sous SQL pour etre sur d'envoyer au bon format, et de traiter ensuite au bon format egalement.
cela te permet aussi d'eviter de te baser sur les parametres regionnaux ou autre qui peuvent effectivement changer d'une machine a l'autre
jms20
Messages postés8Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention21 décembre 2005 17 nov. 2005 à 22:53
En ce qui concerne mes variables VB , elle sont saisie via un batch mais vu que j'ai remarqué cette erreur, je les ai mis en dur dans mon code VB mais le problème persiste !!
J'ai mis des point d'arrêt pour voir ce que contient ma variable avant execution de la procedure stockée et j'ai mis en sortie de ma procedure les parametres d'entrée pour voir s'il ont ete modifié :
- en dur dans vb date de deb: 2001-01-01, date de fin : 2005-29-05
- avant execution de la procedure date de deb: 2001-01-01, date de fin : 2005-29-05
- après execution de la procedure , valeur récupérer dans VB : date de deb: 2001-01-01, date de fin : 2005-29-05
J'ai bien les resultats souhaités et les dates n'ont pas été modifiés mais si je lance ma procedure dans Query analyser avec comme paramètre : date de deb: 2001-01-01, date de fin : 2005-29-05 , alors j'ai une erreur SQL Serveur car le format n'est pas valide !!
aieeeuuuuu
Messages postés698Date d'inscriptionjeudi 16 janvier 2003StatutMembreDernière intervention20 mai 20113 18 nov. 2005 à 11:07
comment fait tu ta conversion dans ta procedure stockee ?
sinon essaie de mettre une trace dans ta proc stock afin de voir quelles sont les valeur des tes variable, avant et apres conversion. il faut trouver a quel moment les dates sont mal interpretées avant de pouvoir resoudre le probleme !
jms20
Messages postés8Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention21 décembre 2005 18 nov. 2005 à 16:26
Dans ma procedure stockéé étant donné que je ne declare pas mais parametre en date mais en varchar, je ne convertit pas les dates !!
Sinon, comment est ce que tu fais pour tracé dans une procédure stockée lorsque tu la lances dans VB ??
Est ce que SQL Serveur peut interpreter les parametres d'entrées lorsqu'ils viennent de l'exterieur et les convertir automatiquement car dans les critères de ma procédure, je compare mes paramètres d'entrees (datedeb datefin qui sont déclaré en varchar) à des champs dateTime d'une autre table !!
Ainsi SQL Serveur doit convertir les parametre d'entrée car il sait que dans la procedure stockée il va devoir les comparé à un champ datetime , non ?? Les paramètres venant de VB ptet que pour lui ils sont forcement au format AAAA-JJ-MM et si les valeurs ne sont pas correct, il retourne des valeurs nulles , non ??
Je vois que ça comme explication mais je peux pas verifier pour le moment , je ne sais pas comment voir les valeurs de mes dates dans la procedure stockée lorsque je la lance depuis VB !!