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 d'itération dans mon prog


Sujet :

VB.NET

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 7
    Par défaut Problème d'itération dans mon prog
    Bonjour,
    Je ne suis pas développeur, mais dans le cadre d'un projet je dois faire une petite appli.
    J'utilise l'ide visual studio et developpe en vb.net


    Voila mon problème:
    J'utilise une datagridview afin de récupérer des informations pour une DB.
    Pour l'instant mes tests se limitent à afficher les données saisies.
    Je souhaite récupérer les valeurs de champs tant que la valeur de la 1ere colonne n'est pas vide (il n'y a que 2 colonnes).

    Voici mon code:
    (toutes mes variables sont déclarées)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    i = 0
    Do
    var1 = DataGridView1.Rows.Item(i).Cells.Item(0).Value
    var2 = DataGridView1.Rows.Item(i).Cells.Item(1).Value
    i = i + 1
    MsgBox("colonne 1: " & var1)
    MsgBox("colonne 2: " & var2)
    Loop While DataGridView1.Rows.Item(i).Cells.Item(0).Value IsNot DBNull.Value
    Ca fonctionne jusqu'à la derniere itération où là j'ai le message suivant sur la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Loop While DataGridView1.Rows.Item(i).Cells.Item(0).Value IsNot DBNull.Value
    l'index était hors limite. Il ne doit pas être négatif ou inferieur à la taille de la collection. nom du parametre: index.
    J'ai regardé sur MSDN, mais je n'ai pas compris leurs explications.

    J'ai fait un autre test pour voir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    i=0 
    if While DataGridView1.Rows.Item(i).Cells.Item(0).Value IsNot DBNull.Value then 
    var1 = DataGridView1.Rows.Item(i).Cells.Item(0).Value 
    var2 = DataGridView1.Rows.Item(i).Cells.Item(1).Value 
    i = i + 1 
    MsgBox("Colonne 1: " & var1)  
    MsgBox("Colonne 2: " & var2)  
    end if
    Et là, pas de soucis même si le champs est vide.

    voila voila.
    Merci

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 4
    Par défaut
    ton test est bizarre... car dans un premier temps tu rempli la variable var1 et a la fin de la boucle tu test si la valeur dans le datagrid est vide et si c'est le cas tu sors...
    le test devrais être fait avant.
    De plus ton deuxième test est plus que bizarre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if While DataGridView1.Rows.Item(i).Cells.Item(0).Value IsNot DBNull.Value then
    sa m'etonne que ce code fonction...
    un if n'est pas suivi d'un while :s

    Si tu veux je te taperais un morceau de code si tu as besoin qui ressemble au tien.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 7
    Par défaut
    Citation Envoyé par Overkill78 Voir le message
    De plus ton deuxième test est plus que bizarre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if While DataGridView1.Rows.Item(i).Cells.Item(0).Value IsNot DBNull.Value then
    sa m'etonne que ce code fonction...
    un if n'est pas suivi d'un while :s

    Si tu veux je te taperais un morceau de code si tu as besoin qui ressemble au tien.
    Pour le morceau de code je veux bien, merci.
    Désolé, c'est une erreur de copier/collé.
    Le test avec if est celui ci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    i=0 
    if DataGridView1.Rows.Item(i).Cells.Item(0).Value IsNot DBNull.Value then 
    var1 = DataGridView1.Rows.Item(i).Cells.Item(0).Value 
    var2 = DataGridView1.Rows.Item(i).Cells.Item(1).Value 
    i = i + 1 
    MsgBox("Colonne 1: " & var1)  
    MsgBox("Colonne 2: " & var2)  
    end if
    Citation Envoyé par Overkill78 Voir le message
    ton test est bizarre... car dans un premier temps tu rempli la variable var1 et a la fin de la boucle tu test si la valeur dans le datagrid est vide et si c'est le cas tu sors...
    le test devrais être fait avant.
    .
    C'est vrai, mais lorsque je fais le test avant, c'est pareil:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    i=0
    While DataGridView1.Rows.Item(i).Cells.Item(0).Value IsNot DBNull.Value
    var1 = DataGridView1.Rows.Item(i).Cells.Item(0).Value 
    var2 = DataGridView1.Rows.Item(i).Cells.Item(1).Value 
    i = i + 1 
    MsgBox("Colonne 1: " & var1)  
    MsgBox("Colonne 2: " & var2)   
    End While
    Il faut surement faire autrement, mais je ne vois pas comment

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 77
    Par défaut
    Bonjour

    Si je ne me trompe pas, l'erreur est liée à la lecture d'une composante d'une ligne du datagridview qui ne doit pas exister.

    Il te faut deux conditions : Savoir si tu as dépassé la dernière ligne et si ce n'est pas le cas, savoir si le contenu de la première colonne est nul.

    Essaye avec ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Dim i as integer = 0
    With DataGridView1
                Do Until i > .RowCount - 1 OrElse .Item(0, i).Value = ""
                    MsgBox("Colonne 1 : " & .Item(0, i).Value)
                    MsgBox("Colonne 2 : " & .Item(1, i).Value)
                    i = i + 1
                Loop
            End With

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 7
    Par défaut
    Merci Yann_DZ, le problème est résolu.
    Je n'ai plus la lecture, qui doit être comme tu l'indiques, d'une ligne inexistante.
    Ca fonctionne correctement:
    - en renseignant les 2 colonnes
    - en renseignant la 1ere colonnes et aléatoirement la seconde (cas que je peux rencontrer)
    - en terminant par la valeur zéro dans la 1ere colonne (cas que je ne peux pas rencontrer)

    Par contre si il y a une erreur de saisie, ex: je rempli la 2eme colonne mais pas la 1ere, et que je continue la saisie sur les lignese suivantes, là il s'arrête.
    Ce n'est de toute manière pas grave étant donné que la 1ere colonne correspond à des références et la seconde à des quantités, donc le résultat serait faux dans tous les cas en cas d'erreur de saisie.
    Super en tout cas, je me prenais le choux depuis un moment sur ça.

    Je vais regarder en détail ton code.

    Merci pour votre participation.

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

Discussions similaires

  1. Problème d'itération dans mon actionListener
    Par Invité dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 02/08/2007, 15h02
  2. [C# 2.0] Problème de DLL dans mon site web
    Par Rodie dans le forum ASP.NET
    Réponses: 2
    Dernier message: 04/12/2006, 16h43
  3. Problème d'affichage dans mon état
    Par gontrand16 dans le forum Access
    Réponses: 6
    Dernier message: 05/07/2006, 20h29
  4. Problème de paramètres dans mon code javascript
    Par cocacollection dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 15/03/2006, 10h53
  5. Réponses: 2
    Dernier message: 06/06/2005, 15h13

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