IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Convertion de String en Date("ddMMyy")


Sujet :

C#

  1. #1
    Membre habitué Avatar de Saten
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    203
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 203
    Points : 133
    Points
    133
    Par défaut Convertion de String en Date("ddMMyy")
    Bonjour à tous,
    J'ai un problème pour convertir une chaine string "ddMMyy" en Date pour après l'insérer dans une requête SQL (BDD MySql).

    Alors voilà en fait c'est lors d'une lecture de fichier .txt que je récupère des variables string à des lignes spécifiées, et voilà ce que j'ai essayé, mais le format rentré est invalide me dit le message d'erreur.

    donc ici je récupère la 51ème ligne du fichier .txt, comprenant la date de type "ddMMyy", et je la stock dans une variable, et il faudrait qu'elle soit au format Date...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    case 51:
          var4 = ligne;
          DateTime.ParseExact(var4, "ddMMyy", null); 
          break;
    Après du coté Base de Données, j'utilise des paramètres, donc j'affecte la paramètre "date":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    MySqlParameter paramdate = new MySqlParameter("@date", MySqlDbType.Date);
                paramprix.Value = row[3];
     
    //...
     
    String sql2 = string.Format("INSERT INTO ***(Date, ***, ***) VALUES({0},{1},{2})", paramdate.ParameterName, param***.ParameterName, param***.ParameterName);
                MySqlCommand cmd2 = new MySqlCommand(sql2.ToString(), Connection);
                cmd2.Parameters.Add(paramdate);
                cmd2.Parameters.Add(param***);
                cmd2.Parameters.Add(param***);
     
    //...
    Mais voilà je n'arrive pas à récupérer cette date via variable!
    Pouvez vous m'aider s'il vous plait?
    Merci d'avance!

  2. #2
    Membre extrêmement actif Avatar de fally
    Homme Profil pro
    Développeur .Net / BI
    Inscrit en
    Novembre 2007
    Messages
    966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur .Net / BI

    Informations forums :
    Inscription : Novembre 2007
    Messages : 966
    Points : 1 173
    Points
    1 173
    Par défaut
    dans ton code, on ne voit nulle part où tu affectes une valeur à "paramdate" et de plus tu devrais ajouter d'abord tes paramètres avant d'exécuter ta commande

  3. #3
    Membre habitué Avatar de Saten
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    203
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 203
    Points : 133
    Points
    133
    Par défaut
    Je ne l'ai pas mis désolé, mais voilà comment ça fonctionne...

    D'abord:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    string[] row0 = { var1, var2, var3, var4};
    Les variables que l'on va récupérer iront dans un tableau string.

    Puis:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dataGridView1.Rows.Add(row0);
                dataGridView1.Columns[0].DisplayIndex = 1;
    On met en Grid tout ça.

    Puis:Pour une raison Tiers, je duplique le tableau pour séparer les usages.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MySqlParameter paramdate = new MySqlParameter("@date", MySqlDbType.Date);
    Là je crée la paramètre date.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    paramprix.Value = row[3];
    J'affecte au paramètre une valeur : row[3] (= ma date)

    -----------------------------------

    Tu me dis:
    "et de plus tu devrais ajouter d'abord tes paramètres avant d'exécuter ta commande "
    Pas nécessairement, cela ne change rien. C'est un ajout à mon application que de récupérer la date, avant ça marchait très bien avec les paramètres après...

    -----------------------------------

    Et enfin :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DateTime.ParseExact(var4, "ddMMyy", null);
    La apparemment, il veut pas me convertir ça :s
    Le format de la chaine d'entrée est incorect.

  4. #4
    Membre extrêmement actif Avatar de fally
    Homme Profil pro
    Développeur .Net / BI
    Inscrit en
    Novembre 2007
    Messages
    966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur .Net / BI

    Informations forums :
    Inscription : Novembre 2007
    Messages : 966
    Points : 1 173
    Points
    1 173
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MySqlParameter paramdate = new MySqlParameter("@date", MySqlDbType.Date);
    paramprix.Value = row[3];
    paramdate != paraprix

    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DateTime.ParseExact(var4, "ddMMyy", null);
    pourqoui ne pas faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DateTime madate = Convert.ToDateTime(var4);

  5. #5
    Expert éminent sénior

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Points : 12 465
    Points
    12 465
    Par défaut
    La question est p-e bete, mais, qu'est-ce que tu as dans var4 au moment du parseexact ?

  6. #6
    Membre habitué Avatar de Saten
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    203
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 203
    Points : 133
    Points
    133
    Par défaut
    Citation Envoyé par fally Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MySqlParameter paramdate = new MySqlParameter("@date", MySqlDbType.Date);
    paramprix.Value = row[3];
    paramdate != paraprix
    Merci! Lol, une belle gourde que j'ai pas vu!

    Citation Envoyé par fally Voir le message
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DateTime.ParseExact(var4, "ddMMyy", null);
    pourqoui ne pas faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DateTime madate = Convert.ToDateTime(var4);
    J'ai tout fait, j'ai d'ailleurs déplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DateTime madate = Convert.ToDateTime(var4)
    juste avant la mise en paramètre.

    et là j'ai une nouvelle erreur:
    "La chaine n'a pas été reconnue en tant que DateTime valide."


    Edit: string var4 contient simplement : "041208" de type ddMMyy.

  7. #7
    En attente de confirmation mail
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Points : 669
    Points
    669
    Par défaut
    Citation Envoyé par Saten Voir le message
    Merci! Lol, une belle gourde que j'ai pas vu!



    J'ai tout fait, j'ai d'ailleurs déplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DateTime madate = Convert.ToDateTime(var4)
    juste avant la mise en paramètre.

    et là j'ai une nouvelle erreur:



    Edit: string var4 contient simplement : "041208" de type ddMMyy.
    Dans les exempled que tu montres tu n'affectes jamais le resultat de ton DateTime.ParseExact

    C'est plutôt ceci qu'il faut mettre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DateTime madate = DateTime.ParseExact(var4, "ddMMyy", null);

  8. #8
    Membre habitué Avatar de Saten
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    203
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 203
    Points : 133
    Points
    133
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DateTime madate = DateTime.ParseExact(var4, "ddMMyy", null);
                MySqlParameter paramdate = new MySqlParameter("@date", MySqlDbType.Date);
                paramdate.Value = madate;
    Ne marche toujours pas... j'ai encore cette erreur:
    "La chaine n'a pas été reconnue en tant que DateTime valide."
    ...

  9. #9
    En attente de confirmation mail
    Inscrit en
    Août 2006
    Messages
    550
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Août 2006
    Messages : 550
    Points : 669
    Points
    669
    Par défaut
    Cela devrait fonctionnné...

    Questions :

    Es-tu sur de la valeur de var4 au moment du ParseExact ?
    Es-tu sur que l'exception se produit sur le ParseExact ?

  10. #10
    Expert éminent sénior

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Points : 12 465
    Points
    12 465
    Par défaut
    pour m'enfoncer dans ma betise, si tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DateTime madate = DateTime.ParseExact("041208", "ddMMyy", null);
    est-ce que ca marche ?

  11. #11
    Membre habitué Avatar de Saten
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    203
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 203
    Points : 133
    Points
    133
    Par défaut
    Alors voilà j'ai test dans une appli console vite fait:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    string var4 = "311208";
                DateTime madate = DateTime.ParseExact(var4, "ddMMyy", null);
                Console.WriteLine(madate);
    Niquel, ça m'affiche une valeur de type DateTime, et m'affiche 31-12-08 00:00:00(bon l'heure que la zapperais plus tard).

    Donc j'ai intégré ça à mon code.Voilà les étapes.

    1: D'abord on récupères les données dans le fichier .txt sous format "String", donc je récupère à une ligne précise: la string "041208" de type "ddMMyy".
    Donc on a une variable "var4 = 041208";

    2: j'appelle une fonction "PopulateDataGridView()" pour afficher les données dans le DGV, voilà le code de la fonction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
     
    public void PopulateDataGridView()
            {
                // mise en tableau des 3 données
                string[] row0 = { var1, var2, var3, var4};
                // mise en grid du tableau
                dataGridView1.Rows.Add(row0);
                dataGridView1.Columns[0].DisplayIndex = 1;
                //Dédoublement du tableau
                row = row0;
     
                //Paramètres de connexion
                Connect();
     
                //Définition des SQLParameters
                MySqlParameter paramref = new MySqlParameter("@ref", MySqlDbType.String, 50);
                //On associe à la variable récupérée précédemment
                paramref.Value = row[0];
     
                MySqlParameter paramdesign = new MySqlParameter("@design", MySqlDbType.String, 100);
                paramdesign.Value = row[1];
     
                MySqlParameter paramprix = new MySqlParameter("@prix", MySqlDbType.Double);
                paramprix.Value = row[2];
     
                DateTime madate = DateTime.ParseExact(row[3], "ddMMyy", null);
                MySqlParameter paramdate = new MySqlParameter("@date", MySqlDbType.DateTime);
                paramdate.Value = madate;
     
                //On définit la requête SQL
                String sql1 = string.Format("INSERT INTO Produits(Reference, Designation) VALUES({0},{1})", paramref.ParameterName, paramdesign.ParameterName);
                MySqlCommand cmd = new MySqlCommand(sql1.ToString(), Connection);
                //On ajoute les paramètres définis à la commande SQL
                cmd.Parameters.Add(paramref);
                cmd.Parameters.Add(paramdesign);
     
                String sql2 = string.Format("INSERT INTO ProdPxVen(Date, PrixVenteTTC, Reference) VALUES({0},{1},{2})", paramdate.ParameterName, paramprix.ParameterName, paramref.ParameterName);
                MySqlCommand cmd2 = new MySqlCommand(sql2.ToString(), Connection);
                cmd2.Parameters.Add(paramdate);
                cmd2.Parameters.Add(paramref);
                cmd2.Parameters.Add(paramprix);
     
                //Ouverture de connexion
                Connection.Open();
     
                //Exécution requête
                cmd.ExecuteNonQuery();
                cmd2.ExecuteNonQuery();
                //Fermeture de connexion
                Connection.Close();
     
            }
    Et je récupère toujours l'erreur comme quoi c'est pas la chaine n'a pas été reconnu comme DateTime valide...

    Je comprends pas là...

  12. #12
    Membre habitué Avatar de Saten
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    203
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 203
    Points : 133
    Points
    133
    Par défaut
    Rofl, c'est bon, j'ai trouvé la méga super cou****! tout venait de ma première vboucle de lecture que j'avais set sur une délimitation de lecture de ligne précise, donc il pouvait jamais alllez jusqu'à la ligne de la date ... Donc c'est moi qui bug là, overdose je crois...
    Merci à vous donc la méthode fonctionnelle est bien:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DateTime madate = DateTime.ParseExact(row[3], "ddMMyy", null);
    Dit presque au début... Désolé pour les neurones que j'ai pu déranger après pour rien... :p

    Petite Question, comment puis-je ne récupérer que la date, et pas l'heure?
    Coté code c#, ou coté code SQL?

  13. #13
    Membre habitué Avatar de Saten
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    203
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 203
    Points : 133
    Points
    133
    Par défaut
    Je post trop vite... C'est bon, juste à paramétrer MySql pour ça et c'est bon...

    Op' Résolu, merci à tous!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. convertion d'un String en date dans jTextfield
    Par ra'uf dans le forum Composants
    Réponses: 5
    Dernier message: 03/06/2009, 13h29
  2. convertion d'une string en date
    Par robert_trudel dans le forum Collection et Stream
    Réponses: 8
    Dernier message: 02/07/2008, 19h04
  3. hql: convertion de string en date
    Par osoumayaj dans le forum Hibernate
    Réponses: 3
    Dernier message: 04/01/2007, 13h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo