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 condition if dans datagridview


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2011
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Homme

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

    Informations forums :
    Inscription : Février 2011
    Messages : 267
    Par défaut Problème condition if dans datagridview
    Bonjour,
    J'ai un problème avec la condition if si dessous en rouge.
    le code ci dessous permet d'affecter dans les colonnes du datagridview les donné de ma base (table article: identifiant ,designation ,prix ,remise... )avec deux méthode.
    1er: si je tape l'identifiant de la table dans la cellule(0) du datagridview et je clique flèche droit du clavier le reste des attribut va etre affecter dans le reste du datagridview.
    2eme:si je tape le caractère ? et je clique flèche droit du clavier il va etre afficher un form qui contient un textbox qui permet de choisir une designation ,on choisi une et donc tous le reste des attribut va etre affecté.
    la 1er if (1er methode)marche bien,mais la elseif (2ème méthode) marche au debut puis elle affiche un erreur dans la 1er if(1er methode) qui n'est pas juste et plus que j'ai testé quelle accede a la 1ere if avec le msgbox en bleu qui a marché.

    Merci de m'aider

    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
     Public ligne As Integer
     Private Sub entre_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Dg.KeyUp
    
            If e.KeyCode = Keys.Right Then
                ligne = Dg.CurrentCell.RowIndex
                Do
                    If (Dg.Rows(ligne).Cells(0).Value <> "" And Dg.Rows(ligne).Cells(0).Value <> "?") Then
                       
    
                        MsgBox("azerttyuuiiiooooookk")
                        Dim adpt2 As New SqlDataAdapter("select A.DESIG,A.PVHTGRO,A.CTVA from [Base-Ets-Mtiri].[dbo].[ARTICLE] A where A.ART='" & Me.Dg.Rows(Me.ligne).Cells(0).Value & "'", con)
    
                     code...
                        End If
                      
                        Exit Do
    
    
                    ElseIf Dg.Rows(ligne).Cells(0).Value = "?" Then
    
                        Dialogarticle.Show()
                        Exit Do
    
                    End If
    
                Loop While ligne < 100
    
    
    
            End If
    
        End Sub

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Par défaut


    Ne serait-ce pas un problème du fait que tu as moins de 100 lignes ?

  3. #3
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2011
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Homme

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

    Informations forums :
    Inscription : Février 2011
    Messages : 267
    Par défaut
    Citation Envoyé par asmduty Voir le message


    Ne serait-ce pas un problème du fait que tu as moins de 100 lignes ?
    J'ai pas un problème du boucle,j'ai un problème de condition.

  4. #4
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Par défaut
    Tentative non valide de lecture lorsque aucune donnée n'est présente.
    D'où ma question.

    Il y a-t-il 100 lignes ?


    Dg.Rows(ligne).Cells(0).Value <> "" And Dg.Rows(ligne).Cells(0).Value <> "?"

    tu as 5 lignes, tu continues jusqu'a la ligne 100
    les 5 premières lignes nickel, la ligne 6 tu cherche la valeur dans la cellule 0.
    Sachant que tu as pas de ligne 6 il t'envoie balader ...

  5. #5
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2011
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Homme

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

    Informations forums :
    Inscription : Février 2011
    Messages : 267
    Par défaut
    Citation Envoyé par asmduty Voir le message
    D'où ma question.

    Il y a-t-il 100 lignes ?


    Dg.Rows(ligne).Cells(0).Value <> "" And Dg.Rows(ligne).Cells(0).Value <> "?"

    tu as 5 lignes, tu continues jusqu'a la ligne 100
    les 5 premières lignes nickel, la ligne 6 tu cherche la valeur dans la cellule 0.
    Sachant que tu as pas de ligne 6 il t'envoie balader ...
    non,moi j'ajoute les ligne au fur et a mesure que le nombre d'ajout peut atteindre le 100 ligne c'est pas ca le problème

  6. #6
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Par défaut
    Ba écoute vu l'erreur ...

    Tu dis que ça bloque sur le if n°1.
    Pourquoi il n'arrive pas passer ce if alors qu'il devrait arriver au second puisque la condition est fausse selon toi ?

    Enfin bref bonne chance, n'oublie surtout pas de nous donner la solution à ce problème une fois qu'il sera résolu.

  7. #7
    Membre éprouvé Avatar de LeCygne
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2010
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2010
    Messages : 91
    Par défaut
    Bonjour,

    Citation Envoyé par oami89 Voir le message
    1er: si je tape l'identifiant de la table dans la cellule(0) du datagridview et je clique flèche droit du clavier le reste des attribut va etre affecter dans le reste du datagridview.
    La boucle suivante parcoure toutes les ligne de votre table. A quoi sert elle ?

    Citation Envoyé par oami89 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    For k = 0 To dst2.Tables("table").Rows.Count - 1
        des = dst2.Tables("table").Rows(k).Item(0) & vbCrLf
        pht = dst2.Tables("table").Rows(k).Item(1) & vbCrLf
        ctva = dst2.Tables("table").Rows(k).Item(2) & vbCrLf
    Next

    Citation Envoyé par oami89 Voir le message
    la 1er if (1er methode)marche bien,mais la elseif (2ème méthode) marche au debut puis elle affiche un erreur dans la 1er if(1er methode) qui n'est pas juste et plus que j'ai testé quelle accede a la 1ere if avec le msgbox en bleu qui a marché.
    aidez moi SVP
    Quel est ce message d'erreur ?

  8. #8
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2011
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Homme

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

    Informations forums :
    Inscription : Février 2011
    Messages : 267
    Par défaut
    Citation Envoyé par LeCygne Voir le message
    Bonjour,
    La boucle suivante parcoure toutes les ligne de votre table. A quoi sert elle ?
    Quel est ce message d'erreur ?
    La boucle sert a effectuer le traitement dans tous les lignes du datagridview.

    Le message d'erreur est:
    Tentative non valide de lecture lorsque aucune donnée n'est présente.
    (qui est causé a des donné manquant parce que accède a la 1er if que normale il n'accède pas).

  9. #9
    Membre éprouvé Avatar de LeCygne
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juin 2010
    Messages
    91
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juin 2010
    Messages : 91
    Par défaut
    Bonjour,

    Pour avoir brièvement testé ce code tout à l'heure, je peux preciser à ceux qui apportent leur contribution, que la boucle n'est pas genante. Voici sa structure lorsqu'on l'epure :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Do
        If (Dg.Rows(ligne).Cells(0).Value <> "" And Dg.Rows(ligne).Cells(0).Value <> "?") Then
            ...
            Exit Do
     
        ElseIf Dg.Rows(ligne).Cells(0).Value = "?" Then
     
            Dialogarticle.Show()
            Exit Do
     
        End If
     
    Loop While ligne < 100
    En fait, elle ne sert ici à rien puisque on fait un "Exit Do" dans les deux cas testé (Pour être tomber dedans, le cas de la chaine vide aboutit à une boucle sans fin... Mais sans plantage).

    oami89, afin d'éliminer tout cas supect et de faciliter les autres membres à vous aider, je vous suggère de faire disparaitre cette boucle et de réécrire le code de la manière suivante :

    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
     
    'Do
        If (Dg.Rows(ligne).Cells(0).Value = "") Then
            'Cellule contenant une chaine vide
            'Code à prevoir....
     
        ElseIf (Dg.Rows(ligne).Cells(0).Value = "?") Then
            'Cellule contenant un point d'interrogation
            Dialogarticle.Show()
            ....
            'Exit Do
        Else
            'Cellule contenant n'importe quelle autre valeur
            MsgBox("azerttyuuiiiooooookk")
            ....
            'Exit Do
     
        End If
     
    'Loop While ligne < 100
    Je n'ai pas réussi à reproduire votre érreur faute de DataTable.

  10. #10
    Membre très actif
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2011
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Homme

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

    Informations forums :
    Inscription : Février 2011
    Messages : 267
    Par défaut
    je vous explique encore:
    j'ai un datagridview.Je veux si je clique flèche droit du clavier sur un cellule du ligne du 0.100 et de colonne 0:
    traitement 1 du 1 er if ---> après avoir écrire le code article le reste des attributs va et être affecté dans le reste des colonnes.
    traitement 2 du 2eme if ---> après avoir écrire le ? elle s'ouvre une fenêtre dialogue_article qui contient liste des codes et après le choix, le code est affecté avec le reste des attributs dans le datagridview.

    le 1er traitement qui est la 1er méthode d'affectation fonctionne bien.
    mais le 2eme traitement au début du débogage les données s'affecte bien dans le datagridview dans le 2ème if marche bien mais après il entre dans le premier if que normalement il ne lui accède pas donc affiche un erreur de manque de données.

  11. #11
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Par défaut
    J'avais pas vu le end Do, qu'est-ce que c'est pas beau de coder comme ça ><

    Bref, comme dit au dessus, pose un point d'arrêt sur ton second if, et vas-y au pas à pas, c'est surement un petit truc tout bête.

Discussions similaires

  1. Problème affichage données dans dataGridView
    Par hamzawhy dans le forum C#
    Réponses: 4
    Dernier message: 07/06/2014, 12h10
  2. Problème du requete dans datagridview
    Par oami89 dans le forum VB.NET
    Réponses: 1
    Dernier message: 04/04/2011, 16h26
  3. Problème de tri dans Datagridview
    Par chebmo90 dans le forum Windows Forms
    Réponses: 18
    Dernier message: 24/06/2009, 10h37
  4. [Système] Problème de syntaxe dans condition
    Par pierrot10 dans le forum Langage
    Réponses: 10
    Dernier message: 09/10/2006, 14h10
  5. Problème: condition sur formulaire dans requête
    Par decour dans le forum Access
    Réponses: 1
    Dernier message: 17/10/2005, 23h27

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