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

VB.NET Discussion :

validation de tous les champs dans un formulaire


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 100
    Par défaut validation de tous les champs dans un formulaire
    Bnjour à tous,

    Je voudrais lorsque l'utilisateur valide sa saisie lui dire de remplire tous les champs si cela n'est pas fait.
    J'ai deja fais cela en vba comme cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim ValManquante As Boolean
    'Vérifier que tous les champs ont été saisis
    ValManquante = IsNull(Forms!AjoutPilote!numero) = True Or IsNull(Forms!AjoutPilote!nom) = True Or IsNull(Forms!AjoutPilote!prenom) = True Or IsNull(Forms!AjoutPilote!ville) = True Or IsNull(Forms!AjoutPilote!tel) = True
     
    If ValManquante = True Then
    MsgBox ("Vous devez saisir toutes les valeurs")
     
    Else
    mais sur vb.net cela ne fonctionne pas si quelqu'un peut m'aider merci d'avance de votre aide

  2. #2
    Membre émérite
    Avatar de Gurdil le nain
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 468
    Par défaut
    Bonjour,

    C'est ton test qui n'est pas correct. Il faudrait faire comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    If Not String.IsNullOrWhiteSpace(textBoxNumero) AndAlso Not String.IsNullOrWhiteSpace(textBoxNom) AndAlso Not String.IsNullOrWhiteSpace(textBoxPrenom) AndAlso Not String.IsNullOrWhiteSpace(textBoxVille) AndAlso Not String.IsNullOrWhiteSpace(textBoxTel) Then
         'Traitement
    Else
         'Erreur
         MsgBox("Vous devez saisir toutes les valeurs")
         'Au passage, tu ferais mieux d'afficher les erreurs directement sur le formulaire sans passer par des messagesBox contraignantes
                    'Exemple : tu affiches un label en rouge mentionnant de remplir tous les champs et tu changes la couleur des textBox vides (il y a d'autres méthodes, après c'est selon ta conception de l'ergonomie :D)
    End If
    La méthode IsNullOrWhiteSpace vérifie si la chaine de caractère est nulle, vide ou entièrement constitué d'espaces.
    L'opérateur andAlso fait que dès qu'une condition n'est pas remplie, le test complet est faux et il ne teste donc pas les autres conditions et passe directement dans le else.

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 81
    Par défaut
    Bonjour,

    Moi j'utilise un "ErrorProvider", ça vient mettre des pastilles rouges à coté des champs non remplis.


    Pour en mettre un tu le glisses de la "boite à outils" sur ta form, et ensuite je fais une fonction qui teste tout mes champs de saisie :

    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
     Private Function GestionErreurs()
            Dim Bon As Boolean = True
     
            If IsNumeric(TXT_CONSOMMATION.Text) Then
                Me.Erreurs.SetError(Me.PNL_Consommation, "")
                TXT_CONSOMMATION.ForeColor = Color.Blue
                LBL_Consommation.ForeColor = Color.Black
            Else
                Me.Erreurs.SetError(Me.PNL_Consommation, "Valeur numérique obligatoire !")
                TXT_CONSOMMATION.ForeColor = Color.Red
                LBL_Consommation.ForeColor = Color.Red
                Bon = False
            End If
     
            If IsNumeric(TXT_DISTANCE.Text) Then
                Me.Erreurs.SetError(Me.PNL_Distance, "")
                TXT_DISTANCE.ForeColor = Color.Blue
                LBL_Distance.ForeColor = Color.Black
            Else
                Me.Erreurs.SetError(Me.PNL_Distance, "Valeur numérique obligatoire !")
                TXT_DISTANCE.ForeColor = Color.Red
                LBL_Distance.ForeColor = Color.Red
                Bon = False
            End If
     
            If IsNumeric(TXT_PRIX.Text) Then
                Me.Erreurs.SetError(Me.PNL_Prix, "")
                TXT_PRIX.ForeColor = Color.Blue
                LBL_Prix.ForeColor = Color.Black
            Else
                Me.Erreurs.SetError(Me.PNL_Prix, "Valeur numérique obligatoire !")
                TXT_PRIX.ForeColor = Color.Red
                LBL_Prix.ForeColor = Color.Red
                Bon = False
            End If
     
            Return Bon
        End Function
    Ici dans cette fonction je regarde s'il y a bien quelque chose, et que la valeur rentré soit une valeur numérique.

    Ensuite tu viens éxécuter ta fonction sur l'événement souhaité. Ainsi tu contrôles tes champs de saisie, et tu indiques les endroits non remplis.

    "ErrorProvider" ici a été renommé en "Erreurs" et la fonction "SetError" permet d'activer la pastille rouge. Ici à coté de l'objet PNL qui correspont à panel, mais tu peux aussi mettre ça sur des textbox, ou autre, ...


    sinon pour se qui est de l'erreur a proprement parler, j'utilise IsNothing ou ""


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    If IsNothing(variable) or variable = "" then
    'Affichage de l'erreur
    else
    'Execute la procédure ou fonction


    Cordialement,
    Nicolas

  4. #4
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 100
    Par défaut
    d'accord merci pour votre aide.

    gurdil le nain

    j'ai une question car des label j'ai deja essayé de les mettre en place en m'aider des tuto mais je n'ai pas reussi enfait.

    pourrais-tu me donner un exemple en mettant la champs pas rempli de couleur?

    merci d'avance

  5. #5
    Membre émérite
    Avatar de Gurdil le nain
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 468
    Par défaut
    Ouais, alors imaginons que tu ais le champ textBoxNumero de vide et que tu as un lblError (dont le texte est déjà remplie avec la couleur que tu veux) caché à côté de ton bouton de validation (ou ailleurs peu importe).

    Dans ton code, tu devrais faire un truc du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    lblError.Visible = True
     
    textBoxNumero.BackColor = Color.Red

  6. #6
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2012
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 100
    Par défaut
    d'accord merci.
    peux-tu regarder mon code?
    et me dire se qu'il ne va pas.
    moi je pense que mon if n'est pas placé au bonne endroit...
    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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
        Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
            '-------------------------------------        
            '   Variables declaration
            '-------------------------------------
     
            Dim objCommand As SqlCommand
     
            Dim objParam As SqlParameter
     
            Dim dt_KeywordsID As DataTable = New DataTable("produit")
     
            Dim dtc_KeywordsID As DataColumn
     
            Dim myConnection As SqlConnection = New SqlConnection("data source=UC033\DEV;integrated security=SSPI;initial catalog=BUDGET2")
     
            If Not String.IsNullOrWhiteSpace(nom) AndAlso Then
     
                'Traitement
     
     
     
     
                '-------------------------------------
     
                '   Create a connection to SQL Server
     
                objCommand = New SqlCommand("dbo.spd_produit_insert", myConnection)
     
                objCommand.CommandType = CommandType.StoredProcedure
     
                objCommand.Connection.Open()
     
                '-------------------------------------
     
                '   Create parameters for sp
     
                '-------------------------------------  
     
     
                objParam = objCommand.Parameters.Add("@nom", SqlDbType.VarChar, 50)
                objParam.Value = nom.Text
     
                '-------------------------------------
     
                '   Prepare table as parameter
     
                '------------------------------------- 
     
                dtc_KeywordsID = New DataColumn()
     
     
                dtc_KeywordsID.ColumnName = "id_produit"
     
                dt_KeywordsID.Columns.Add(dtc_KeywordsID)
                '-------------------------------------
     
                '   Store procedure execution
     
                '-------------------------------------  
                             objCommand.ExecuteNonQuery()
     
     
     
                '-------------------------------------
                '   Close the connexion object
                '-------------------------------------  
     
                objCommand.Connection.Close()
     
     
                '-------------------------------------------
                'verifier si tous les champs sont remplis
                '-------------------------------------------
     
            Else
                'Erreur
                Session("txtmessage") = "il faut remplir tous les champs"
                Response.Redirect("message.aspx")
            End If
     
     
     
     
     
     
     
            '---------------------------
            'message de confirmation
            '---------------------------
     
            Session("txtmessage") = "l'ajout est bien effectuer"
            Response.Redirect("message.aspx")
     
        End Sub
       End Class
    voila mon code mais j'ai 2 erreurs sur cette ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not String.IsNullOrWhiteSpace(nom) AndAlso Then
    pour le (nom) il me dit:
    impossible de convertir une valeur de 'system.web.controls.TextBox' en 'string'
    pour le then il me dit:
    expression attendu
    voila merci d'avance

  7. #7
    Membre émérite
    Avatar de Gurdil le nain
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2009
    Messages
    468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 468
    Par défaut
    Euh ouais, enfin là, il va falloir que tu ailles voir des tutos sur les bases du vb .Net parce que ces erreurs sont basiques de chez basique

    Tu as un très bon cours ici.

    Pour ton code, il faut faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not String.IsNullOrWhiteSpace(nom.Text) Then
    En fait "nom" est un contrôle de type textBox, qui comme tous les contrôle contient des propriétés. Ces propriétés te permettent d'agir graphiquement sur le contrôle (couleur, position, taille...) mais également sur les données qu'il contient. Donc dans ton cas, le contrôle textBox a sa valeur dans la propriété Text

    Pour la deuxième erreur, c'est simplement que le mot clé AndAlso sert à ajouter une condition au test, donc si tu n'as qu'une condition tu n'en as pas besoin

Discussions similaires

  1. Récupérer tous les champs d'un formulaire
    Par grunk dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 05/10/2007, 20h13
  2. Mettre une même valeur à tous les champs d'un formulaire.
    Par nodogeid dans le forum VBA Access
    Réponses: 3
    Dernier message: 08/06/2007, 15h43
  3. recuperer le nom de tous les champs d'un formulaire
    Par phoenix1998 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 23/05/2006, 11h39
  4. Réponses: 7
    Dernier message: 17/05/2006, 09h09
  5. Obtenir tous les champs d'un formulaire
    Par killprog dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 20/03/2006, 13h15

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