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 :

Problème de "Or" en VB.NET


Sujet :

VB.NET

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Juin 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Juin 2015
    Messages : 3
    Points : 0
    Points
    0
    Par défaut Problème de "Or" en VB.NET
    Bonjour,

    Je suis un débutant et j'ai un problème quand j'essaye d'utiliser le "Or" ... Voici mon problème :

    Quand je mets ca:

    Nom : Capture.PNG
Affichages : 163
Taille : 2,1 Ko

    Je me retrouve avec ça :

    Nom : 2.PNG
Affichages : 149
Taille : 35,1 Ko

    Sûrement parce que il y a plusieurs "Or" car quand je mets que " If TextBox1.text Or TextBox2.text = "" then

    MsgBox("TEST")" Ca marche

    Pouvez vous me dire la cause de l'erreur et me dire comment la résoudre ? Merci !

  2. #2
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 193
    Points : 28 077
    Points
    28 077
    Par défaut
    Tu compte faire quoi avec ça ?

    La seconde solution ne devrait pas plus marcher que la première. En tout cas aucun des deux n'ont de signification.

    quand tu fait If condition Then, condition doit être un résultat de type boolean. Si tu utilise des or ou des and dans l'expression, chaque opérandes doit aussi être une résultat de type boolean.
    Or Textbox.Text n'est pas de type boolean, mais de type texte, il ne peut pas être testé avec des opérateurs OR.

    Il faut que tu fasse un test qui renvoie un booléan, comme TextBox1.Text = "", Textbox2.Text <> "Retour Maison", IsNumeric(TextboxMachin.Text), ...
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  3. #3
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Salut,

    if (text) pourrait marcher en C mais pas en VB
    Ce que tu cherches à faire est de savoir si toutes ces chaines sont vides ? Il faut alors répéter à chaque fois le test conditionnel.
    Ça donne un truc du genre if (text1 = "" Or text2 = "" Or text3 = "") Then ...
    Pour aller plus loin tu pourrais même utiliser l'opérateur OrElse qui parait tout indiqué dans ton cas.

    Maintenant je te conseille de prendre quelques minutes pour lire un tuto VB, tout te semblera plus clair très rapidement
    Plus je connais de langages, plus j'aime le C.

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Juin 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Juin 2015
    Messages : 3
    Points : 0
    Points
    0
    Par défaut Merci de ta reponse :D
    Enfaite je veux dire que si le textbox1 est vide alors msgbox ("test") ( je pense que tu as compris ^^) sauf que j'ai 8 textbox et que pour ces 8 textbox c'est la meme commande .

    Je me suis donc dit que avec Or je pourrai accumuler les textbox ...

    Je peux t'assurer que si on met que " if textbox1.text or textbox2.text = "" ca marche

    Et si j'ai bien compris, "TextBox1.Text = "", Textbox2.Text <> "Retour Maison", IsNumeric(TextboxMachin.Text)" va convertir le textbox en boolean ??

    Merci pour ton aide ^^

  5. #5
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 193
    Points : 28 077
    Points
    28 077
    Par défaut
    ça converti pas, ça fait une comparaison et le résultat de la comparaison est un boolean
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Juin 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Juin 2015
    Messages : 3
    Points : 0
    Points
    0
    Par défaut
    Je comprend pas là, a quoi sert ce que tu m'as dit ?

    Et pourquoi jopo me dis que en mettant text1 or text2 or text3 ca marche ? Qui m'aiclaire svp ?? :~(

  7. #7
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Je pense que la partie intéressante et primordiale de mon message est en fin de compte : commence par lire quelques tuto.
    Plus je connais de langages, plus j'aime le C.

  8. #8
    Membre habitué Avatar de ToshiroSama
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2010
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2010
    Messages : 77
    Points : 131
    Points
    131
    Par défaut
    Bonjour,

    Je vais essayer à mon tour de t'expliquer ce que tu trouvera au début de n'import quel tuto

    Pour commencer :
    Je peux t'assurer que si on met que " if textbox1.text or textbox2.text = "" ca marche
    Je peux t'assurer que non !! en fait ce qui se passe est le suivant, tu as une condition (ton if) composée de deux expressions (séparé par le OR). ta condition sera "vraie" que si les deux expressions sont "vraies". il faut savoir que la conditionif Textbox1.Text Then marchera si on saisi un long (ou un entier.. ou quelque chose convertible automatiquement en long), du coup si tu saisi "1" elle retournera "vrai" parce que la conversion vers le type "long" est faite sans exception et que "1" est différent de "0" qui le nullable du type "long"
    Autrement dit : tu était entrain de tester SI textbox2.text n'est pas null et au même temps si ce qui est saisi dans textbox1 est different de la valeur null du type long, bien entendu si tu saisi une lettre dans Textbox1, ca va te sortir une belle exception relative à la conversion de String vers Long.

    Ce que tu es sensé faire :
    Tester sur l'ensemble de tes TextBox. TextBox1.Text <> ... Or TextBox2.Text <> ... ainsi de suite.

    Pour reprendre le mot "convertir"
    ON NE CONVERTIT RIEN DANS UN BLOC IF !!!
    quelque chose derrière (pour ne pas sortir d'autres termes qui risquent de poser d'autres problèmes ) va tester chacune des expressions de ta condition ( rappel : IF expr1 OR expr2 AND expr3 est une condition ). et à chaque fois il va remplacer l'expression par son équivalence en terme de "Vrai/Faux" à la fin il va combiner les "vrai/faux" suivant les opérateur OR/AND... quelque chose comme FAUX AND VRAI => FAUX ...

    Enfin :
    PREND L'HABITUDE d'utiliser (String.Empty) et non ""...
    Face your fears, live your life

  9. #9
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Janvier 2013
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Janvier 2013
    Messages : 57
    Points : 44
    Points
    44
    Par défaut
    Pour que le code soit moins lourd tu peut renommer tes textbox avec des nom plus court, ici je les nommerais ainsi = 'TB1', 'TB2', etc.
    Ce n'est pas forcement la meilleur façon de les nommer mais c'est pour l'exemple...

    Ensuite tu vas devoir faire comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If TB1.text = "" Or  TB2.text = "" Or  TB3.text = "" Or  TB4.text = "" Or  TB5.text = "" Or  TB6.text = "" Or  TB7.text = "" Or  TB8.text = "" Then
    [...]
    End If
    En fait entre chaque 'Or' il y a une seul condition, et si tu fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If TB1.text Or TB2.Text Or TB3.Text = ""
    cela ne corespond pas a lui dire 'Si dans TB1 ou dans TB2 ou dans TB3 il n'y a pas de texte alors' mais cela correspond a : "Si le texte de TB1 est vrai ou que le text de TB2 est vrai ou que il n'y a pas de texte dans TB3 alors" (cela ne veut rien dire)

    un équivalent de ce que tu a écrit est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If TB1.text = True Or TB2.Text = True Or TB3.Text = ""

  10. #10
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Sinon, tu peux faire une boucle sur tes TextBox :
    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
     
    Dim Txt As Control
    Dim Vide As Boolean = True
     
    For Each Txt In Me.Controls
     
        If TypeName(Txt) = "TextBox" Then
     
            If Txt.Text <> "" Then
     
                Vide = False
                Exit For
     
            End If
     
        End If
     
    Next Txt
     
    If Vide = False Then
     
        MsgBox ("Au moins un des champs n'est pas vide !")
     
    Else
     
        MsgBox ("Tous les champs sont vide !")
     
    End If
    Hervé.

  11. #11
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Points : 5 100
    Points
    5 100
    Par défaut
    @Theze
    Autant utiliser l'exemple de la FAQ Comment intervenir sur un ensemble de même type de contrôles d'un conteneur ?
    Et on l'écrit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        For Each ctrl In Me.Controls.OfType(Of TextBox)() 
                if ctrl.text = "" then
                   messagebox.show ("Vide")
                   exit for
                end if
            Next
    Et tu peux même positionner le curseur sur le textbox qui est vide (s'il y en a un). Avec ctrl.Focus() placé derrière la ligne "messagebox.show ..."
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  12. #12
    Membre chevronné
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Points : 2 209
    Points
    2 209
    Par défaut
    et quitte à utiliser les méthodes d'extension issues de Linq (OfType) autant pousser le vice jusqu'au bout et faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Controls.OfType(Of TextBox).Any(Function(tb) tb.Text = "")
        MessageBox.Show("vide")
    End If
    Nous sommes tous plus ou moins geek : ce qui est inutile nous est parfaitement indispensable ( © Celira )
    À quelle heure dormez-vous ?
    Censément, quelqu'un de sensé est censé s'exprimer sensément.

  13. #13
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2013
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2013
    Messages : 121
    Points : 77
    Points
    77
    Par défaut
    Essai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If TextBox1.text = "" Or TextBox2.text = "" Or TextBox3.text = "" then
    MsgBox("Texte est Vide")
    EndIf

Discussions similaires

  1. [Wamp] Problème d'insertion avec quote d'un formulaire
    Par cyberdevelopment dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 20/08/2006, 18h55
  2. [SQL-Server] Problèmes de guillemets et quotes dans un INSERT
    Par gregb34 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 05/05/2006, 09h40

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