Problème Date sql server, ASP.NET

Résolu
MzSrH Messages postés 10 Date d'inscription samedi 10 avril 2010 Statut Membre Dernière intervention 22 avril 2011 - 21 avril 2011 à 18:52
christmajesty Messages postés 2 Date d'inscription dimanche 17 janvier 2010 Statut Membre Dernière intervention 18 mars 2012 - 18 mars 2012 à 12:26
Bonjour a tous!
Encore un autre problème
J'ai un formulaire sous ASP.NET avec un champ pour la Date. L'orsque je récupère la date et que je veux l'insérer dans la table correspondante (en appelant la procédure stocker d'insertion) J'obtiens une erreur l'osque les jours dans cette date dépasse 12. J'ai compris que SQL server utilise les dates En (MM/DD/YYYY) c'est a dire que mes jours sont placé à la place des mois! Comment faire pour changer (MM/DD/YYYY) en (DD/MM/YYYY) ? J'ai fais quelque recherches mais je n'y ai rien compris!


Voila un exemple de ce que j'ai trouver :
set dateformat 'mdy'
select Convert (datetime, '1/2/2008')
Mais je ne vois pas où est ce que je dois mettre ce code!

Je précise aussi que mes dates sont déclaré dans SQL de type DATE.

13 réponses

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
21 avril 2011 à 22:23
http://www.labo-dotnet.com/post/Proteger-vos-requetes-SQL-a-le28099aide-des-requetes-parametrees.aspx

De plus la requete devient preparée et donc
le plan d'execution ne change pas, donc une amelioration des performances.

select nom from personne where age = @age
est identique pour tous les ages
par rapport
a
select nom from personne where age = 10
select nom from personne where age = 20
--> plan d'execution different


bon dev
3
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
22 avril 2011 à 10:00
Salut,

as-tu essayer de monter des objets DateTime pour ensuite les passer au AddWithValue() ? Du genre :
DateTime dtp = DateTime.ParseExact(TxtDatePrevue.Text, "dd/MM/yyyy", null);
DateTime dtr = DateTime.ParseExact(TxtDateReel.Text, "dd/MM/yyyy", null);
cmd5.Parameters.AddWithValue("@DATEPREVUEL", dtp);
cmd5.Parameters.AddWithValue("@DATEREELL", dtr);


Tiens nous au courant si ça ne change rien.
3
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
21 avril 2011 à 21:07
Salut,

Si tu ne veux pas avoir de probleme avec les dates
tu dois utiliser les requetes paramétrées et ado.net les gera tres bien.
0
MzSrH Messages postés 10 Date d'inscription samedi 10 avril 2010 Statut Membre Dernière intervention 22 avril 2011
21 avril 2011 à 21:26
Qu'est ce que tu veux dire par requêtes paramétrées?
0

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

Posez votre question
MzSrH Messages postés 10 Date d'inscription samedi 10 avril 2010 Statut Membre Dernière intervention 22 avril 2011
21 avril 2011 à 22:45
@nhervagault Merci beaucoup pour ta réponse. Cette méthode a l'aire très intéressante en effet. Le seul problème c'est que moi mon SqlCommand ne recoi pas une requête, mais le nom de la procédure stocké d'insertion, voici un extrait de mon code :

cmd5 = New SqlCommand
Connection()
cmd5.CommandType = CommandType.StoredProcedure
cmd5.CommandText = "SP_INSERT_VERSION"
cmd5.Connection = con
cmd5.Parameters.Clear()
cmd5.Parameters.AddWithValue("@DATEPREVUEL", TxtDatePrevue.Text)
cmd5.Parameters.AddWithValue("@DATEREELL", TxtDateReel.Text)
...

donc je ne peux pas construire la chaîne de commande SqlCommand avec des paramètres.
Désolé pour le dérangement, je ne suis que débutante et Merci encore
0
MzSrH Messages postés 10 Date d'inscription samedi 10 avril 2010 Statut Membre Dernière intervention 22 avril 2011
22 avril 2011 à 11:28
Salut jopop ^^
Merci beaucoup pour ta réponse ça ma beaucoup aidé. Voila j'ai fais comme tu a dis et ca marche très bien
Voila un exemple de ce que ca donne en ASP.NET si quelqu'un a le même problème :
ASP.NET
Imports System.Globalization

   Dim dtp As New DateTime
   Dim dtr As New DateTime
   Dim Culture As IFormatProvider
   ' For French Culture Pass fr-Fr
   Culture = New CultureInfo("fr-Fr", True)

        dtp = DateTime.ParseExact(TxtDate1.Text, "dd/MM/yyyy", Culture)
        dtr = DateTime.ParseExact(TxtDate2.Text, "dd/MM/yyyy", Culture)
        cmd.Parameters.AddWithValue("@DATE1", dt1)
        cmd.Parameters.AddWithValue("@DATE2", dt2)

Bonne journée a tous
0
MzSrH Messages postés 10 Date d'inscription samedi 10 avril 2010 Statut Membre Dernière intervention 22 avril 2011
22 avril 2011 à 11:36
Oups correction (j'ai oublié de changé le nom de toutes les variables)

Imports System.Globalization

   Dim dt1 As New DateTime
   Dim dt2 As New DateTime
   Dim Culture As IFormatProvider
   ' For French Culture Pass fr-Fr
   Culture = New CultureInfo("fr-Fr", True)

        dt1 = DateTime.ParseExact(TxtDate1.Text, "dd/MM/yyyy", Culture)
        dt2 = DateTime.ParseExact(TxtDate2.Text, "dd/MM/yyyy", Culture)
        cmd.Parameters.AddWithValue("@DATE1", dt1)
        cmd.Parameters.AddWithValue("@DATE2", dt2)

voila ^^
0
josella Messages postés 16 Date d'inscription lundi 14 mai 2007 Statut Membre Dernière intervention 14 mai 2011
22 avril 2011 à 13:23
comment je peux le faire en vb/.net
0
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
22 avril 2011 à 14:30
c'est déjà du VB.NET, josella ;)
0
josella Messages postés 16 Date d'inscription lundi 14 mai 2007 Statut Membre Dernière intervention 14 mai 2011
22 avril 2011 à 14:38
ah wi c vrai j'ai lu celui du c# mais pas celui de asp.net
Merci :D
0
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
22 avril 2011 à 14:42
A l'occasion t'auras remarqué que y'a pas grande différence entre les deux, et que la transcription est assez aisée ;)
0
MzSrH Messages postés 10 Date d'inscription samedi 10 avril 2010 Statut Membre Dernière intervention 22 avril 2011
22 avril 2011 à 15:29
Oui effectivement y'a pas grande différence, et si une débutante (moi ) a réussi a le faire, alors tout le monde peut il suffi de fouiller un peut, Google est notre ami pas vrai?
Bonne journée a tous
0
christmajesty Messages postés 2 Date d'inscription dimanche 17 janvier 2010 Statut Membre Dernière intervention 18 mars 2012
18 mars 2012 à 12:26
THX JOPOP JE VAIS ESSAYER PARCE QUE J'AI EU LE MEME PROBLEME ET JE TE FERAI UN FEEDBACK..THX
0
Rejoignez-nous