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 :

Comparaison d'une date avec un masque


Sujet :

Windows Forms

  1. #1
    Membre éprouvé
    Avatar de Elros
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Avril 2009
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 403
    Points : 912
    Points
    912
    Billets dans le blog
    9
    Par défaut Comparaison d'une date avec un masque
    J'aimerai comparer une date saisie dans un textbox à un masque de saisie ( dd/mm/yyyy , dd/mm/yy et dd/mm ), ceci me permettant d'exécuter une requête.

    voila ce que j'ai essayé de faire...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If txtOptionRecherch.Text = Format("dd/mm/yyyy") Then
        cmdSelect = "SELECT NumCli as Numéro, NomCli as Nom, PrenomCli as Prénom, TelCli as Tel FROM Client WHERE DateCreat=#" & txtOptionRecherch.Text & "#"
        lblResultatTab.Text = " client(s) trouvé(s) au " & txtOptionRecherch.Text
    End If
    merci d'avance,
    Elros.

  2. #2
    Membre averti Avatar de roster
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 397
    Points : 426
    Points
    426
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
       txtOptionRecherch.Mask = "00/00/0000"
            If txtOptionRecherch.MaskCompleted Then
     
            ...
     
            End If

  3. #3
    Membre éprouvé
    Avatar de Elros
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Avril 2009
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 403
    Points : 912
    Points
    912
    Billets dans le blog
    9
    Par défaut
    Mask et MaskCompleted ne sont pas membres System.Windows.Forms.TextBox

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 172
    Points : 25 112
    Points
    25 112
    Par défaut
    tu fais une requete différente selon le format entré dans le textbox ou tu completes juste ce qui a été écrit dans le textbox avec l'année actuelle par exemple ?


    sinon je te conseille d'utiliser les dbparameters pour faire des requetes paramétrées
    ca évite les conversion de date et les problèmes des ' sur les chaines de caractères

  5. #5
    Membre éprouvé
    Avatar de Elros
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Avril 2009
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 403
    Points : 912
    Points
    912
    Billets dans le blog
    9
    Par défaut
    Je fais une requête différente en fonction de ce qui est saisie.
    Si l'utilisateur saisie 14/05/2009 j'afficherai tous les clients de cette date.
    Si l'utilisateur saisie 05/2009 j'afficherai tous les clients de ce mois à cette année.
    Et si l'utilisateur saisie 2009 j'afficherai tous les clients de cette année.
    Voila mon problème exacte, c'est pour ca que je voulais comparer ce qui est saisie aux masques.

  6. #6
    Responsable .NET

    Avatar de Hinault Romaric
    Homme Profil pro
    Consultant
    Inscrit en
    Janvier 2007
    Messages
    4 570
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 4 570
    Points : 252 372
    Points
    252 372
    Billets dans le blog
    121
    Par défaut
    ton problème n'est pas lié au format tu peu verifier le nombre de caractères saisie avec la fonction Len la sa te permet de savoir quel requete exécuté

  7. #7
    Membre averti Avatar de roster
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 397
    Points : 426
    Points
    426
    Par défaut
    Citation Envoyé par Elros Voir le message
    Mask et MaskCompleted ne sont pas membres System.Windows.Forms.TextBox

    Ah oui, je pensais que tu utilisais une MaskedTextbox.

    Si tu connais par avance l'ensemble des possibilités saisies par l'utilisateur et qu'il n'y en ait pas de trop, tu peux toujours faire du bricolage en imbriquant les conditions:


    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
     Dim MaskedTextBox1 As New MaskedTextBox  'on instancie une MaskedTextbox
            MaskedTextBox1.Text = txtOptionRecherch.Text ' text à comparer
     
            MaskedTextBox1.Mask = "00/00/0000" 'on définit un masque
            If MaskedTextBox1.MaskCompleted Then
                MsgBox("ok 00/00/0000") 'text correspond au masque
     
            Else : MaskedTextBox1.Mask = "00/00/00" 'sinon on change le mask et ainsi de suite...
                If MaskedTextBox1.MaskCompleted Then
                    MsgBox("ok 00/00/00")
                Else : MaskedTextBox1.Mask = "00/00"
                    If MaskedTextBox1.MaskCompleted Then
                        MsgBox("ok 00/00")
                    End If
                End If
     
            End If

    Il y a sûrement mieux...

  8. #8
    Membre averti Avatar de roster
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 397
    Points : 426
    Points
    426
    Par défaut
    Citation Envoyé par lilroma Voir le message
    ton problème n'est pas lié au format tu peu verifier le nombre de caractères saisie avec la fonction Len la sa te permet de savoir quel requete exécuté
    Beaucoup plus efficace en effet si l'on vérifie que seuls des caractères numériques soient saisis, à l'exception de '/'.

  9. #9
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 172
    Points : 25 112
    Points
    25 112
    Par défaut
    splitter sur /
    et ensuite selon le nombre d'éléments trouvés faire le traitement adéquat

  10. #10
    Membre éprouvé
    Avatar de Elros
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Avril 2009
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 403
    Points : 912
    Points
    912
    Billets dans le blog
    9
    Par défaut
    j'ai résolu mon problème, mais bon ça reste lourd comme code...

    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
     
                    'permet de couper une date en 1,2 ou 3 parties
                    tabDate = Split(txtOptionRecherch.Text, "/")
                    ' jj/mm/aaaa
                    If tabDate.Length = 3 Then
                        While tabDate(0).Length <> 2 Or tabDate(1).Length <> 2 Or tabDate(2).Length <> 4
                            txtOptionRecherch.Text = InputBox("Veuillez entrer un date au format (jj/mm/aaa) !", "Attention")
                            tabDate = Split(txtOptionRecherch.Text, "/")
                        End While
                        cmdSelect = "SELECT NumCli as Numéro, NomCli as Nom, PrenomCli as Prénom, TelCli as Tel FROM Client WHERE DateCreat=#" & txtOptionRecherch.Text & "#"
                        lblResultatTab.Text = " client(s) trouvé(s) au " & txtOptionRecherch.Text
                    End If
                    ' mm/aaaa
                    If tabDate.Length = 2 Then
                        While tabDate(0).Length <> 2 Or tabDate(1).Length <> 4
                            txtOptionRecherch.Text = InputBox("Veuillez entrer un date au format (mm/aaaa) !", "Attention")
                            tabDate = Split(txtOptionRecherch.Text, "/")
                        End While
                        cmdSelect = "SELECT NumCli as Numéro, NomCli as Nom, PrenomCli as Prénom, TelCli as Tel FROM Client WHERE Month(DateCreat)=" & tabDate(0) & " AND Year(DateCreat)=" & tabDate(1) & ""
                        lblResultatTab.Text = " client(s) trouvé(s) au mois " & tabDate(0) & "/" & tabDate(1)
                    End If
                    ' aaaa
                    If tabDate.Length = 1 Then
                        While tabDate(0).Length <> 4
                            txtOptionRecherch.Text = InputBox("Veuillez entrer un date au format (aaaa) !", "Attention")
                            tabDate = Split(txtOptionRecherch.Text, "/")
                        End While
                        cmdSelect = "SELECT NumCli as Numéro, NomCli as Nom, PrenomCli as Prénom, TelCli as Tel FROM Client WHERE Year(DateCreat)=" & tabDate(0) & ""
                        lblResultatTab.Text = " client(s) trouvé(s) en " & tabDate(0)
                    End If

  11. #11
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 172
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 172
    Points : 25 112
    Points
    25 112
    Par défaut
    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
    tabDate = Split(txtOptionRecherch.Text, "/")
     
    cmdSelect = "SELECT NumCli as Numéro, NomCli as Nom, PrenomCli as Prénom, TelCli as Tel FROM Client WHERE DateCreat>=@DateDeb AND DateCreat<=@DateFin"
     
    dim pdeb as parameter = cmd.parameters.add("@DateDeb",datetime)
    dim pfin as parameter = cmd.parameters.add("@DateFin",datetime)
     
    Select Case tabDate.Length
        Case 1 ' année
            pdeb.Value = cdate("01/01/" & txtOptionRecherch.Text & " 00:00:00")
            pfin.Value = cdate("31/12/" & txtOptionRecherch.Text & " 23:59:59")
        Case 2 ' mois/année
            pdeb.Value =  cdate("01/" & txtOptionRecherch.Text & " 00:00:00")
            dim datefin as date = cdate("01/" & txtOptionRecherch.Text & " 23:59:59")
            datefin.addmonths(1)
            datefin.adddays(-1)
            pfin.Value = datefin
        Case 3 ' jour/mois/année
            pdeb.Value = cdate(txtOptionRecherch.Text & " 00:00:00")
            pfin.Value = cdate(txtOptionRecherch.Text & " 23:59:59")
    End Select

    et ça ça t'irait pas ?

  12. #12
    Membre éprouvé
    Avatar de Elros
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Avril 2009
    Messages
    403
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 403
    Points : 912
    Points
    912
    Billets dans le blog
    9
    Par défaut
    Ah je n'avais pas pensé à faire ça comme ça.
    Merci

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 12/07/2013, 22h49
  2. Comparaison d'une date avec son jour nommé
    Par zooffy dans le forum ASP.NET
    Réponses: 5
    Dernier message: 29/04/2010, 15h56
  3. Réponses: 5
    Dernier message: 20/11/2008, 11h20
  4. [MySQL] comparaison d'une date avec la date système
    Par kawther dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 23/12/2007, 03h05
  5. [Oracle] Comparaison d'une date avec la date du jour.
    Par mika0102 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 12/10/2007, 11h52

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