Problème Date sql server, ASP.NET [Résolu]

Signaler
Messages postés
10
Date d'inscription
samedi 10 avril 2010
Statut
Membre
Dernière intervention
22 avril 2011
-
Messages postés
2
Date d'inscription
dimanche 17 janvier 2010
Statut
Membre
Dernière intervention
18 mars 2012
-
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

Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
28
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
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
12
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.
Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
28
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.
Messages postés
10
Date d'inscription
samedi 10 avril 2010
Statut
Membre
Dernière intervention
22 avril 2011

Qu'est ce que tu veux dire par requêtes paramétrées?
Messages postés
10
Date d'inscription
samedi 10 avril 2010
Statut
Membre
Dernière intervention
22 avril 2011

@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
Messages postés
10
Date d'inscription
samedi 10 avril 2010
Statut
Membre
Dernière intervention
22 avril 2011

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
Messages postés
10
Date d'inscription
samedi 10 avril 2010
Statut
Membre
Dernière intervention
22 avril 2011

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 ^^
Messages postés
16
Date d'inscription
lundi 14 mai 2007
Statut
Membre
Dernière intervention
14 mai 2011

comment je peux le faire en vb/.net
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
12
c'est déjà du VB.NET, josella ;)
Messages postés
16
Date d'inscription
lundi 14 mai 2007
Statut
Membre
Dernière intervention
14 mai 2011

ah wi c vrai j'ai lu celui du c# mais pas celui de asp.net
Merci :D
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
12
A l'occasion t'auras remarqué que y'a pas grande différence entre les deux, et que la transcription est assez aisée ;)
Messages postés
10
Date d'inscription
samedi 10 avril 2010
Statut
Membre
Dernière intervention
22 avril 2011

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
Messages postés
2
Date d'inscription
dimanche 17 janvier 2010
Statut
Membre
Dernière intervention
18 mars 2012

THX JOPOP JE VAIS ESSAYER PARCE QUE J'AI EU LE MEME PROBLEME ET JE TE FERAI UN FEEDBACK..THX