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 :

Problème recherche DataGridview et textbox


Sujet :

Windows Forms

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 7
    Points : 4
    Points
    4
    Par défaut Problème recherche DataGridview et textbox
    Bonsoir a tous! Je suis débutant.

    Voila je souhaite faire la recherche d'un mot dans un Datagirdview en le comparant avec un textbox que j'aurais saisie. Pour cela, j'ai tapé ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    For y = 0 To DataGridView1.Rows.Count
                               If DataGridView1.Rows(y).Cells(1).Value.ToString = TextBox1.Text Then
                        nouveau = False
                    Else : nouveau = True
                    End If            
            Next y
    J'ai ce message d'erreur:
    La référence d'objet n'est pas définie à une instance d'un objet
    Je ne parviens pas a trouver une solution... Si quelqu'un voudrait bien m'aider. Merci

    ps: je travaille sur une colonne seulement (suffisant)

  2. #2
    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
    Tu a une exception je crois que c'est du a la boucle tu doit plutôt aller de 0 a DataGridView1.Rows.Count - 1


    @++
    Vous souhaitez participer aux rubriques .NET ? Contactez-moi

    Si déboguer est l’art de corriger les bugs, alors programmer est l’art d’en faire
    Mon blog, Mes articles, Me suivre sur Twitter
    En posant correctement votre problème, on trouve la moitié de la solution

  3. #3
    Membre à l'essai
    Profil pro
    Étudiant
    Inscrit en
    Août 2009
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2009
    Messages : 18
    Points : 18
    Points
    18
    Par défaut
    Oui ça doit être la solution! Dis nous si c'est ok ! N'oublie pas le résolu...

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Merci de vos réponses!

    Bah j'avais déjà testé et mon problème était toujours présent...

    Tu as raison pour le -1 quand même. Mon soucis est ailleurs donc ^^

    Merci

  5. #5
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Points : 4 232
    Points
    4 232
    Par défaut
    Bonjour,
    ce ne serait pas la valeur 1 de cells :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If DataGridView1.Rows(y).Cells(1).Value.ToString = TextBox1.Text Then
    si tu n'as qu'une seul colonne, c'est l'indice 0, en mettant 1 tu aurais la même exception vu qu'il n'y à pas d'item à cet index...

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Problème résolu ou presque
    Erreur de débutant...
    Merci a vous

  7. #7
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Points : 4 232
    Points
    4 232
    Par défaut
    Quelle méthode utilises-tu pour mettre les données dans ton Datagridview ?
    Par dataset ?
    Car dans ce cas, l'option recherche est déjà implémentée...

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    Je les rentre comme ça..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DataGridView1.Rows.Add(TextBox1.Text, TextBox2.Text, TextBox6.Text, TextBox7.Text, TextBox3.Text, TextBox4.Text, TextBox5.Text, TextBox8.Text)
    L'erreur est forcément dans ce morceau de code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For y = 0 To DataGridView1.Rows.Count - 1
                    If DataGridView1.Rows(y).Cells(0).Value= TextBox1.Text Then                     
                        Label4.Text = "Ancien"
                        Else : nouveau = True
                        Label4.Text = "Nouveau"                    
                    End If
                Next y
    Bien sûr je met la variable "nouveau" à false plus tard dans le code (c'est pas ça le soucis)
    Mon label4 ne passe jamais a "Ancien" alors que la donnée existe déjà dans mon datagridview. Ca prouve bien que ma fonction de recherche ne fonctionne pas (même si je n'ai plus aucune erreur)

  9. #9
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Points : 4 232
    Points
    4 232
    Par défaut
    Utilise les points d'arrêt et le mode pas à pas...
    Sinon dans ton erreur il doit être marqué la ligne ou ca plante... dit nous ou exactement.
    Si tu n'y arrive pas, englobe tout dans un :
    Code vb.net : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    try
        ' ton code ici
    Catch ex As Exception
        msgbox(ex.toString)
    end try
    et tu devrais avoir plus de détail sur ton erreur...

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 7
    Points : 4
    Points
    4
    Par défaut
    D'aprés la petite session débeugage, l'erreur serait ici:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If DataGridView1.Rows(y).Cells(0).Value = TextBox1.Text Then

    DataGridView1.Rows(y).Cells(0).Value ne me renvois rien alors qu'il y a une donnée dans cette case... La donnée est un mot...
    Je peux l'écrire d'une autre manière?

  11. #11
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Points : 4 232
    Points
    4 232
    Par défaut
    Là je seche, si tu as toujours cette erreur :
    La référence d'objet n'est pas définie à une instance d'un objet
    c'est que, comme il est marqué, quelque part sur cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If DataGridView1.Rows(y).Cells(0).Value = TextBox1.Text Then
    Tu fais un appel à une méthode sur une variable ne contenant pas d'objet.
    Donc il n'y a que deux truc qui peuvent merder, soit c'est les Rows, soit c'est les cells.
    Donc si tu met un point d'arret (clique devant la ligne et elle devient rouge) sur cette ligne et que tu mets un espion sur la variable row et cells (clique droit lors de l'arrêt, puis ajouter un espion) tu pourras observer toutes les propriété de ces objets et voir si ils sont instancié...
    Si c'est le cas tu dois appuyer soit rapuyer sur play et voir si ca plante (ca ne devrait pas vu qu'il sont instanciée) et si ca ne plante pas il s'arrêtera sur la prochaine row ou tu regarde de nouveau si tes objet son instancié...
    Tu devrais vite détecter d'où vient le problème.

  12. #12
    Membre à l'essai
    Inscrit en
    Octobre 2003
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 20
    Points : 15
    Points
    15
    Par défaut
    Essaie plutôt ça:

    If DataGridView1.Rows(y).Cells(0).Value.ToString = TextBox1.Text Then

  13. #13
    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
    Citation Envoyé par electro Voir le message
    Essaie plutôt ça:
    If DataGridView1.Rows(y).Cells(0).Value.ToString = TextBox1.Text Then
    Je ne crois pas que sa apporterais une solution au problème

    La référence d'objet n'est pas définie à une instance d'un objet
    Je crois que c'est une Null Reference exception, sa suppose comme on l'a souligne plus haut que son code accède a une cellule qui n'a pas été créer, a mon avis le mieux a faire c'est une exécution pas à pas pour voir a quel niveau sa bug.

    @++
    Vous souhaitez participer aux rubriques .NET ? Contactez-moi

    Si déboguer est l’art de corriger les bugs, alors programmer est l’art d’en faire
    Mon blog, Mes articles, Me suivre sur Twitter
    En posant correctement votre problème, on trouve la moitié de la solution

  14. #14
    Membre à l'essai
    Inscrit en
    Octobre 2003
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 20
    Points : 15
    Points
    15
    Par défaut
    Voici un bout de code que j'ai écrit afin de faire une recherche dans une grille sur la colonne en cours


    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
     
            MyColumn = MyGrid.CurrentCell.ColumnIndex
            For Each MyRow In MyGrid.Rows
                If Not MyRow.Cells(MyColumn).Value Is Nothing Then
                    If MyFrmSearch.optBegins.Checked Then
                        ValueOk = MyRow.Cells(MyColumn).Value.ToString.ToUpper.IndexOf(MyText.ToUpper) = 0
                    Else
                        ValueOk = MyRow.Cells(MyColumn).Value.ToString.ToUpper.IndexOf(MyText.ToUpper) >= 0
                    End If
     
                    If ValueOk Then
                        MyGrid(MyColumn, MyRow.Index).Selected = True
     
                        Exit For
                    End If
                End If
            Next
    Tu remarqueras ce test dans la boucle:
    If Not MyRow.Cells(MyColumn).Value Is Nothing

    Car si tu a une grille avec le mode ajout activé, ça plante justement sur cette ligne. D'ou le test.

Discussions similaires

  1. Réponses: 2
    Dernier message: 01/04/2009, 10h35
  2. problème recherche photos
    Par jeck dans le forum Access
    Réponses: 3
    Dernier message: 18/08/2006, 10h37
  3. problème recherche multi critère
    Par jeck dans le forum Access
    Réponses: 3
    Dernier message: 16/05/2006, 10h42
  4. Problème recherche sur critère
    Par Sendo dans le forum Access
    Réponses: 1
    Dernier message: 08/03/2006, 00h51
  5. problème recherche d'un champ sous paradox
    Par bertrand_declerck dans le forum Bases de données
    Réponses: 2
    Dernier message: 26/04/2005, 15h04

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