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 :

Recherche dans Datagrid


Sujet :

VB.NET

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 34
    Par défaut Recherche dans Datagrid
    Bonjour,
    J'aimerai connaître la meilleur solution pour effectuer des recherches précises dans une table.
    Faut-il passer par des requêtes sql sur la bdd et ensuite faire afficher les résultats dans le datagrid, ou bien passer par un dataset/datatable?

    Je dispose d'une table avec champs, dans l'appli il y a 3 textbox, chacune représentant un champ de la table.
    Par exemple, pour le 1er champ "appareil", en rentrant le nom d'un appareil dans la textbox, le datagrid doit afficher les données concernant cet appareil.

    Merci

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par hellskitchen Voir le message
    Faut-il passer par des requêtes sql sur la bdd et ensuite faire afficher les résultats dans le datagrid, ou bien passer par un dataset/datatable?
    Ca dépend... si tu as relativement peu de données et que tu peux facilement tout charger en mémoire dans un DataSet, c'est la solution la plus performante et la plus facile à mettre en oeuvre. Par contre s'il y a beaucoup de données, c'est peut-être plus judicieux de passer par une requête SQL...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 34
    Par défaut
    entre 10 et 15 milles lignes?

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par hellskitchen Voir le message
    entre 10 et 15 milles lignes?
    Faut voir si c'est des grosses lignes
    Ben tu peux tester : à combien monte ta consommation de RAM si tu charges tout dans le DataSet ? Si ça reste acceptable, utilise des DataView ou BindingSource pour filtrer. Si c'est trop, refais une requête à chaque fois...

  5. #5
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Rechercher, c'est généralement le travail du Serveur Bdd... il le fais vite et bien.

    Je conseillerai de charger dans un dataset si par exemple il faut scruté toutes les lignes et utilisé plusieurs d'entres elles.

    Maintenant, juste pour affiché un élément, je ne pense pas que ça vaille le coup de tout charger en local.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 34
    Par défaut
    Bon finalement j'ai opté pour un datareader mais je galère un peu, j'obtiens cette erreur :

    Complex databinding accepts as a datasource either an Ilist or an IlistSource
    Voiçi le code :
    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
     
    Dim Connexion As New ClassBase
            Connexion.Connexion_access()
     
    Try
     
    Dim Cmd As New OleDb.OleDbCommand
                Cmd.Connection = Connexion.connexion
                Cmd.CommandText = "SELECT (Idappareil_grille) FROM GRILLE "
     
    Dim DataR As OleDb.OleDbDataReader
                DataR = Cmd.ExecuteReader
     
                DataGrid1.DataSource = DataR
     
    Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try

    Merci

  7. #7
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    On ne peut pas utiliser un DataReader comme DataSource...

    Le plus simple, ce serait de remplir un DataTable avec ta requête (via un DataAdapter) et de l'affecter comme DataSource de la grille

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 34
    Par défaut
    pfff, je pite rien ! :s

    voilà ce que j'ai fait :

    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
     
    Dim Connexion As New ClassBase
            Connexion.Connexion_access()
     
     
            Try
                Dim Idappareil As String = TB_App.Text
     
                If Idappareil = TB_App.Text Then
     
                    Dim Adapt As OleDb.OleDbDataAdapter
                    Dim DataS As New DataSet
                    Dim DataT As New DataTable
                    Dim Cmd As New OleDb.OleDbCommand
                    Dim requete As String
     
                    requete = "SELECT (Idappareil_grille) FROM GRILLE WHERE idappareil_grille = '" & Idappareil & "' "
                    Cmd = New OleDb.OleDbCommand(requete)
                    Adapt = New OleDb.OleDbDataAdapter(Cmd)
                    Cmd.Connection = Connexion.connexion
     
                    Adapt.Fill(DataS, "GRILLE")
                    DataT = DataS.Tables("GRILLE")
                    DataGrid1.DataSource = DataT
     
                Else
                    MessageBox.Show("Veuillez entrer un nom d'appareil")
                End If
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
    Lorsque je rentre un nom d'appareil, cela fonctionne, mais lorsque je rentre un mauvais nom ou rien, il m'affiche juste le nom du champ, il ne rentre pas dans le Else...

    Que faire?

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 34
    Par défaut
    c'est nul ce que j'ecris, le if ne sert à rien, puisque idappareil aura tjs la valeur de TB_App.text.
    Mais bon, sans ça il ne m'affiche pas les données de la table pour tel appareil...
    je capte rien!

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 34
    Par défaut
    C'est bon ça marche, je suis vraiment un noob
    Il fallait mettre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
                Dim Idappareil As String = TB_App.Text
     
                If Idappareil <> String.Empty Then
    allez, on continue..

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 34
    Par défaut
    lol
    maintenant le probleme, c'est que des que je rentre une fausse valeur, qui n'existe pas dans la table, il me sort juste le nom du champ puisqu'il test la requete avec cette valeur...

    quelle merde..

Discussions similaires

  1. [Débutant] Recherche dans datagrid
    Par tayeb33 dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 12/06/2013, 13h40
  2. Réponses: 16
    Dernier message: 22/01/2013, 10h21
  3. afficher le resultat d'une recherche dans une datagrid
    Par PETIT_DEVELOPEUR dans le forum Flex
    Réponses: 2
    Dernier message: 22/09/2008, 10h00
  4. Recherche dans un DataGrid
    Par misterweb dans le forum VB.NET
    Réponses: 1
    Dernier message: 18/03/2007, 17h46
  5. [FLASH 8] DataGrid + Recherche dans une cellule ?
    Par ExSter dans le forum Flash
    Réponses: 1
    Dernier message: 30/06/2006, 12h59

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