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

Windows Forms Discussion :

Specifier le format d'une date dans un textbox


Sujet :

Windows Forms

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 33
    Points : 8
    Points
    8
    Par défaut Specifier le format d'une date dans un textbox
    Bonjour, je cherche à n'autoriser que le format : yyyyMMdd dans mon code
    pour cela j'ai une textbox dans laquel l'utilisateur rentre une date.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    if (this.t_datefin.Text!= "yyyyMMdd")  
    	{						
    	F106_Erreur Err = new F106_Erreur("La format de date doit être : JJ/MM/AAAA.");
    	Err.Show();
            }
    else ...
    Merci d'avance
    Manue

  2. #2
    Membre habitué Avatar de Antho42
    Profil pro
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Points : 161
    Points
    161
    Par défaut
    Salut,

    un tour par la fonction "Recherche" t'aurais vite apporté des réponses.

    Je pense que ce sujet peut t'aider.


    Bon travail

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 33
    Points : 8
    Points
    8
    Par défaut
    Merci pour ta réponse, j'ai cherché un peu, le problème c'est que j'ai pas de propriété "masque de saisie" dans ma zone de texte .
    Et à ce que j'ai compris c'est plutot "par là" que je dois m'orienter.

    Manue

  4. #4
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    Regarde du côté la méthode DateTime.ParseExact. Tu devrais trouver des infos dessus avec une petite recherche.
    Pas de questions techniques par MP

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2008
    Messages
    337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 337
    Points : 456
    Points
    456
    Par défaut
    Utilise le control maskedTextBox... Il fontionne très bien.

    bonne continuation a+

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 33
    Points : 8
    Points
    8
    Par défaut
    Ah mais j'aimerai beaucoup l'utiliser, il correspondrait carrement à ce que je veux faire sauf que je peux pas ! il y est pas dans la boîte à outils, ni quand je l'écris moi mm dans le code, sois disant qu'il existe pas, pourtant j'utilise Visual studio .net pro et le framework 3.5

    Bref j'essaye donc avec datetime.parse sauf qu'apparemment on ne peut convertir le type System.dateTime en string...
    Help

    Manue

  7. #7
    Membre habitué Avatar de Antho42
    Profil pro
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Points : 161
    Points
    161
    Par défaut
    Citation Envoyé par manue514 Voir le message
    Ah mais j'aimerai beaucoup l'utiliser, il correspondrait carrément à ce que je veux faire sauf que je peux pas ! il y est pas dans la boîte à outils, ni quand je l'écris moi mm dans le code, sois disant qu'il existe pas, pourtant j'utilise Visual studio .net pro et le framework 3.5
    Bizarre bizarre... tu devrais pourtant l'avoir. (a moins que je loupe quelque chose). Même pas dans les contrôles communs ?

    Bref j'essaye donc avec datetime.parse sauf qu'apparemment on ne peut convertir le type System.dateTime en string...
    Help
    Ça ne conviendrait pas, simplement ça ?
    http://msdn.microsoft.com/fr-fr/library/k494fzbf.aspx

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 33
    Points : 8
    Points
    8
    Par défaut
    Oui sauf que je saisis pas comment l'utiliser avec un textbox, car les dates sont saisies par l'utilisateur et sont ensuite insérées dans la base de données.

    J'aimerai donc que quand le format n'est pas bon un message d'erreur soit affiché !Je trouve plein de choses certes mais je sais pas comment l'adapter à mon cas (cas de novice je précise !)

    Merci en tout cas
    Manue

  9. #9
    Membre habitué Avatar de Antho42
    Profil pro
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Points : 161
    Points
    161
    Par défaut
    Quelque chose du genre pour vérifier donc ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
                    DateTime dt;
     
                    if (DateTime.TryParse(textBoxDate.Text, out dt))
                        MessageBox.Show("Ok");
                    else
                        MessageBox.Show("Pas ok");
     
                    // rien -> Pas ok
                    // 12122003 -> Pas ok
                    // 12/12/2003 -> Ok
                    // 32/12/2003 -> Pas ok
                    // etc..
    Regarde aussi, comme évoqué par StormimOn, du coté de la fonction ParseExact de DateTime, ça peut peut-être t'aider.

    En gros, tu vérifies la saisie avant d'insérer dans ta base de données.

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 33
    Points : 8
    Points
    8
    Par défaut
    T'as tout compris ! En gros j'ai testé ça pour voir et l'erreur est :
    Argument '3'*: impossible de convertir de 'out System.DateTime' en 'System.IFormatProvider'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    DateTime dt;
    	if (DateTime.ParseExact(t_datefin.Text,"dd MMM yyyy",out td))
    			{
    				MessageBox.Show("Ok");
    			}
    			else
    			{
    				MessageBox.Show("Pas ok");
    			}

  11. #11
    Membre habitué Avatar de Antho42
    Profil pro
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Points : 161
    Points
    161
    Par défaut
    Re,

    Déjà, avec deux "MM" pour les mois ça suffit, pas besoin de trois

    Et l'erreur est normale, la méthode ParseExact ne prend pas comme 3e argument un DateTime mais un IFormatProvider.

    Donc la solution est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
                try
                {
                    DateTime.ParseExact(textBoxDate.Text, "dd MM yyyy", new System.Globalization.CultureInfo("fr-FR", true));
                }
                catch
                {
                    MessageBox.Show("Incorrect");
                }
    Ça te convient ?

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 33
    Points : 8
    Points
    8
    Par défaut
    Merci beaucoup, tu es mon nouveau mentor
    Sauf que (hé oui y'a un mais encore !) j'ai fait ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    	datefin = null;
     
    	if (this.t_datefin.Text!="")
    	try
    	{
    	DateTime.ParseExact(t_datefin.Text, "dd MM yyyy", new System.Globalization.CultureInfo("fr-FR", true));
    	}
    	catch
    	{
    	F106_Erreur Err = new F106_Erreur("Le format doit être JJ/MM/AAAA.");
    	Err.Show();
    	}
    	else ...
    et ensuite je fais ça pour insérer dans la base
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ...
    if (datefin!=null) requete+=", DATEFIN='"+datefin+"'";
    else requete+=", DATEFIN=NULL";
    ...
    Donc la question est que mettre pour dire que si c'est null on écrit null dans la base et si c'est bon ben on écrit la date rentrée dans le textbox dans la base ?
    Merci encore
    manue

  13. #13
    Membre habitué Avatar de Antho42
    Profil pro
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Points : 161
    Points
    161
    Par défaut
    Citation Envoyé par manue514 Voir le message
    Donc la question est que mettre pour dire que si c'est null on écrit null dans la base et si c'est bon ben on écrit la date rentrée dans le textbox dans la base ?
    Merci encore
    manue
    C'est quoi ta base de données ?
    Sinon, il faut d'abord que ton champ date puisse recevoir une valeur nulle (mais ça, j'imagine que c'est bon).

    Ensuite, je pense que pour affecter une valeur nulle tu dois affecter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    System.DBNull.Value

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 33
    Points : 8
    Points
    8
    Par défaut
    C'est quoi ta base de données ?
    euh une base de données sous mysql dans laquelle sont stockées les données entrées par l'utilisateur (je sais pas si c'est ça que tu veux comme réponse )

    Sinon comment je l'utilise le
    j'ai remarqué que quand je mettais aucune valeur dans le textbox ça mettait 00-00-0000 dans la bdd au lieu de null d'habitude...

  15. #15
    Membre habitué Avatar de Antho42
    Profil pro
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Points : 161
    Points
    161
    Par défaut
    Citation Envoyé par manue514 Voir le message
    euh une base de données sous mysql dans laquelle sont stockées les données entrées par l'utilisateur (je sais pas si c'est ça que tu veux comme réponse )
    oui c'est ça que je voulais savoir.
    Pour la valeur nulle, un peu à l'image de ce que tu faisais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ...
    if (datefin!=null) requete+=", DATEFIN='"+datefin+"'";
    else requete+=", DATEFIN="+System.DBNull.Value;
    ...
    Quelque chose du genre.

  16. #16
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 33
    Points : 8
    Points
    8
    Par défaut
    Re ! J'ai un problème dans mon code, quand je lance le débugage et que je test le textbox, le message d'erreur s'affiche quand une bonne date est rentrée et quand je rentre n'importe quoi il semble le valider.
    Que dois je modifier ?
    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
     
    	if (this.t_datefin.Text!="")
    			try
    			{
    			DateTime.ParseExact(t_datefin.Text, "dd MM yyyy", new System.Globalization.CultureInfo("fr-FR", true));
    			}
    			catch
    			{
    			F106_Erreur Err = new F106_Erreur("Le format doit être JJ/MM/AAAA.");
    			Err.Show();
     
    			datefin=t_datefin.Text;
    			}
     
    			else ....
    Bonne journée !

  17. #17
    Membre actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    321
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 321
    Points : 265
    Points
    265
    Par défaut
    Bonjour,

    C'est normal, il me semle que dans ton code tu assigne datafin à la valeur de ta textbox que si il y a une erreur...(dans le catch)
    Tu devrais le faire dans le try je pense.

  18. #18
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 33
    Points : 8
    Points
    8
    Par défaut
    ça change pas grand chose !

  19. #19
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 33
    Points : 8
    Points
    8
    Par défaut
    pas d'autres idées ? please je galère !

    manue

  20. #20
    Membre habitué Avatar de Antho42
    Profil pro
    Inscrit en
    Février 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 173
    Points : 161
    Points
    161
    Par défaut
    Salut,

    Tu peux balancer le code et les exemples qui renvoient une exception et ceux qui n'en renvoient pas !?

    Merci

Discussions similaires

  1. Réponses: 8
    Dernier message: 03/04/2009, 17h59
  2. Sélectionner une date dans un textbox
    Par Msysteme dans le forum ASP.NET
    Réponses: 11
    Dernier message: 19/02/2009, 17h44
  3. format d'une date dans un datatable
    Par intissar_g dans le forum JSF
    Réponses: 4
    Dernier message: 10/09/2008, 13h42
  4. Changer le format d'une date dans la commande
    Par leloup84 dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 07/08/2007, 13h42
  5. Format d'une date dans un combo
    Par bobobobo01 dans le forum WinDev
    Réponses: 17
    Dernier message: 11/07/2007, 16h33

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