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 :

comment créer une Requête dans datagrid view sur vb.net


Sujet :

VB.NET

  1. #1
    Membre averti
    Inscrit en
    Août 2009
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 33
    Par défaut comment créer une Requête dans datagrid view sur vb.net
    bonjour
    je veux creer une Requête qui select quelques lignes de table
    mais j'ai un probléme ce que j'arrive a faire -avec les datagrid view- que des select all ..c'est a dire il y a un affichage total de la table et une fois je fais ajouter Requête dans ce meme datagrid view
    il me donne
    le shema retourne par la nouvelle Requête est different de celui de la Requête de base

    j'ai beau cherchee sur msdn mais j'ai pas bien compris les etapes a suivre afin de creer un datagrid view pour une Requête particuliere !
    je dois creer des tableadaptor et des dataset !!
    mais est ce qu'il ya quelqu'un qui peut m'aider a comprendre comment faire exactement !!
    ps: je travaille avec visual studio 2005 +sql server dans une application en windowsform

  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
    Ben fais voir ton code, on peut pas deviner sinon...

  3. #3
    Membre averti
    Inscrit en
    Août 2009
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 33
    Par défaut
    mais je travaille apratir de la boite a outils !
    j'ajoute les datagridview et je clique sur le petit triangle en haut a droite !
    et je choisi les tables et c'est tous!
    et meme quand je fais ajouter requete c'est toujours de la !

  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
    ah... désolé, moi je comprends que le code

  5. #5
    Membre averti
    Inscrit en
    Août 2009
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 33
    Par défaut
    merci comme meme

  6. #6
    Rédacteur
    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
    Billets dans le blog
    121
    Par défaut
    En espérant que j'ai bien compris ce donc tu parle, Il te faut insérer un DatagridView sur ton formulaire, ensuite utiliser un Dataset que tu doit utiliser comme source de données du datagridview.
    Voila quelque lignes de code, tu peut l'insérer dans le Form_load .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
            Dim Dataset1 As New DataSet
            Dim Conn As New SqlClient.SqlConnection("Ma chaine de connexion")
            Dim Dadap As New SqlClient.SqlDataAdapter("Requete sql", Conn)
            Try
                'ici on charge le dataset
                Dadap.Fill(Dataset1, "Ma table")
                'modification de la source de données 
                DataGridView1.DataSource = Dataset1
            Catch ex As Exception
                MessageBox.Show(ex.Message, ex.Source, MessageBoxButtons.OK)
            End Try
    @++
    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

  7. #7
    Membre averti
    Inscrit en
    Août 2009
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 33
    Par défaut
    bonjour
    bon j'ai laissé tomber l'idée de travailler avec la boite a outils de visual studio
    et j'ai commencé a faire cela à l'aide du code
    voila maintenant mon code mais ca marche pas
    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
    Public Class Form1
        Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim connectString As String = "Server=ALI-582A65A96CB\SQLEXPRESS;Database=ONE;Trusted_Connection=True;"
            Dim connection As New System.Data.SqlClient.SqlConnection(connectString)
            connection.Open()
            Dim command As New System.Data.SqlClient.SqlCommand("SELECT * FROM kayn where  testoo='" & textBox1.text & "' ", connection)
            Dim dt As DataTable
            Dim adpt As New Data.SqlClient.SqlDataAdapter(command)
            Dim DataGridView1 As New DataGridView
            Dim ana As New DataSet
     
     
            Try
                adpt.Fill(dt)
                DataGridView1.DataSource = ana
                DataGridView1.Refresh()
                connection.Close()
            End Try
     
     
     
        End Sub
     
     
    End Class

    est ce que vous pouvez m'aider a trouver la cause !

  8. #8
    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 ciara Voir le message
    est ce que vous pouvez m'aider a trouver la cause !
    Normalement, j'aurais dit non
    Parce que "ça ne marche pas", c'est un peu léger comme description du problème

    Mais bon, comme je suis de bonne humeur , voilà ce qui ne va pas :

    1. La DataTable dt n'est pas initialisé et vaut donc null (Nothing en VB), ce qui fait planter l'appel à adpt.Fill
    2. Le DataSet ana n'est pas initialisé non plus et vaut donc null
    3. La table dt (qui n'existe pas) n'appartient pas au DataSet ana (qui n'existent pas non plus)
    4. Le DataGridView que tu utilises n'est pas affiché sur la Form puisque tu ne l'as pas ajouté. D'ailleurs, inutile de le créer dans le code, je suppose que tu l'as déjà créé avec le designer.
    5. Quand tu spécifies un DataSet comme DataSource, tu dois aussi indiquer le nom de la DataTable comme DataMember. En l'occurrence tu n'as pas donné de nom à ta table, donc tu ne peux pas... le plus simple est de mettre directement la DataTable comme DataSource, sans utiliser de DataSet
    6. l'appel à DataGridView1.Refresh() ne sert à rien : d'une part, il n'est pas sur la form, et d'autre part, la méthode Refresh ne sert qu'a rafraichir l'affichage en forçant le contrôle à se redessiner (évènement Paint). Ca ne change rien aux données qui sont prises en compte pour l'affichage, d'ailleurs cet aspect est géré automatiquement, tu ne peux pas le forcer
    7. Si tu mets le connection.Close() dans le Try après le Fill, il ne sera pas exécuté si le Fill lève une exception, tu te retrouveras donc avec une connection ouverte "perdue" : tu n'auras aucun moyen de la retrouver, il faudra donc attendre que le garbage collector la détruise ou redémarrer l'application. Pour être sûr que cette instruction soit exécutée, il faut la placer dans un bloc Finally

    D'autre part, il vaudrait mieux placer ce code dans un autre méthode, "ChargerDonnees" par exemple. Il vaut mieux donner à la méthode un nom explicite qui indique ce qu'elle fait (charger les données) plutôt que quand elle est exécutée (lors du click sur Button1). De cette façon le code sera facilement réutilisable à d'autres endroits (au démarrage, lors du clic sur un menu, etc...)

    Au final ton code devrait être quelque chose comme ça :

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    Public Class Form1
     
        Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
     
            ChargerDonnees()
     
        End Sub
     
        Private Sub ChargerDonnees()
     
            ' Evite de définir la chaine de connexion à chaque endroit où tu l'utilises : si tu dois la changer,
            ' ça fait autant d'endroits à modifier, et ça force à recompiler. Il vaut mieux la définir dans les
            ' paramètres de l'application, comme ça si tu dois la changer tu n'auras qu'un seul endroit à modifier.
            Dim connectString As String = My.Settings.ChaineDeConnection
            Dim connection As New System.Data.SqlClient.SqlConnection(connectString)
     
            ' Essaie de taper une apostrophe (') dans TextBox1, et observe le résultat ;)
            ' Ensuite, va faire un tour ici pour apprendre à régler le problème :
            ' http://johannblais.developpez.com/tutoriel/dotnet/bonnes-pratiques-acces-donnees/#LIV
            Dim command As New System.Data.SqlClient.SqlCommand("SELECT * FROM kayn where  testoo='" & textBox1.text & "' ", connection)
     
            ' N'oublie pas de l'initialiser avec New !
            Dim dt As New DataTable
            Dim adpt As New Data.SqlClient.SqlDataAdapter(command)
     
            Try
                ' Place la connection dans le bloc try : c'est typiquement le genre d'instruction qui peut
                ' lèver une exception.
                connection.Open()
                adpt.Fill(dt)
                DataGridView1.DataSource = dt
            Catch ex As SqlException
                ' On informe l'utilisateur qu'il y a eu un problème :
                MessageBox.Show("Une erreur s'est produite lors du chargement des données !" & vbCrLf & ex.ToString()
            Finally
                ' Le code du bloc Finally est toujours exécuté, même en cas d'erreur dans le Try
                ' On y place donc la fermeture de la connection :
                connection.Close()
            End Try
     
     
     
        End Sub
     
     
    End Class

  9. #9
    Membre averti
    Inscrit en
    Août 2009
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 33
    Par défaut
    bonjour
    je sais que "ça ne marche pas", etais un peu léger comme description du problème !!
    mais "merci" est aussi léger pour exprimer mon remerciemment !
    merci mille et une fois
    c'est un trésor ce que vous avez écrit !

  10. #10
    Membre averti
    Inscrit en
    Août 2009
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 33
    Par défaut
    salut
    ici j'ai fait un code avec une dataset
    juste pour savoir comment ca se fait !
    peut etre il sera utile !!
    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
    34
    35
    36
    37
     
    Public Class Form1
        Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
            ChargerDonnees()
        End Sub
     
        Private Sub ChargerDonnees()
    Dim connectString As String = "Server=ALI-5CB\SQLEXPRESS;Database=ONE;Trusted_Connection=True;"
     
            Dim connection As New System.Data.SqlClient.SqlConnection(connectString)
     
            Dim command As New System.Data.SqlClient.SqlCommand("SELECT * FROM assia where testoo='" & TextBox1.Text & "'", connection)        
     
            Dim adptr As New Data.SqlClient.SqlDataAdapter(command)
            Dim dtset As New DataSet
            Dim dttable As DataTable
     
     
     
            Try
                connection.Open()
     
                adptr.Fill(dtset, "assia")
                dttable = dtset.Tables("assia")
     
                DataGridView1.DataSource = dttable
     
     
     
            Catch ex As Exception
     
            End Try
            connection.Close()
     
     
          End Sub
          End Class

    l'initialisation des dataset ce fait ainsi avec "assia" le nom de la table de la requete ..dans le cas ou il y a une jointure(requete dans deux table ou plus) on choisit une seule juste pour la faire passer en tant que paramètre !

    ps: a monsieur tomlev ..pour la declaration de la chaine de connexion
    Il vaut mieux la définir dans les paramètres de l'application, mais comment ?
    pourriez vous detaillez !! les paramètres de l'application se trouve ou ?

  11. #11
    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 ciara Voir le message
    ps: a monsieur tomlev ..pour la declaration de la chaine de connexion
    Il vaut mieux la définir dans les paramètres de l'application, mais comment ?
    pourriez vous detaillez !! les paramètres de l'application se trouve ou ?
    Dans les propriétés du projet, onglet paramètres
    Crée un nouveau paramètre de type "chaine de connexion", et utilise l'assistant pour définir la chaine de connexion (ou colle celle que tu as déjà)

  12. #12
    Membre averti
    Inscrit en
    Août 2009
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 33
    Par défaut
    oui merci bien .je l'ai fait !!
    mais si je veux créer un exécutable cette chaine que j'ai déclarée va etre modifier ou ca n'a rien a avoir avec !

  13. #13
    Rédacteur
    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
    Billets dans le blog
    121
    Par défaut
    Faut sauvegarder la chaine de connexion dans le fichier App.Config. la après installation sur un autre poste tu va juste éditer ce fichier.


    @++
    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
    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 ciara Voir le message
    oui merci bien .je l'ai fait !!
    mais si je veux créer un exécutable cette chaine que j'ai déclarée va etre modifier ou ca n'a rien a avoir avec !
    j'ai pas compris...
    La chaine de connexion est stockée dans un fichier de configuration, qui s'appelle app.config dans ton projet, mais devient TonProgramme.exe.config après compilation

  15. #15
    Membre averti
    Inscrit en
    Août 2009
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 33
    Par défaut
    je m'explique ..si je veux faire mon application sur un un autre pc !!
    alors les chemins vont etre differents ! et donc ca va pas marcher
    moi je sais pas comment je serai capable d'executer l'application dans un autre pc surtout si je veux faire un install de cette apps !!
    voila j'ai deja fait un autre sujet a propos !
    http://www.developpez.net/forums/d80...cation-vb-net/

  16. #16
    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
    Comme je te l'ai dit, la chaine de connexion n'est PAS dans l'exécutable, elle est dans un fichier à côté. Donc tu n'as pas besoin de te préoccuper de cette chaine de connexion quand tu génères l'exe

  17. #17
    Membre averti
    Inscrit en
    Août 2009
    Messages
    33
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 33
    Par défaut
    merci bien

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

Discussions similaires

  1. [ABAP] Comment créer une requête avec jointure
    Par roadster62 dans le forum SAP
    Réponses: 1
    Dernier message: 21/02/2006, 16h04
  2. Comment créer une somme dans un état?
    Par ivan rung dans le forum Access
    Réponses: 6
    Dernier message: 20/01/2006, 07h56
  3. Réponses: 4
    Dernier message: 01/12/2005, 14h36
  4. [C#] Comment supprimer une ligne dans DataGrid ?
    Par BAUDIER dans le forum ASP.NET
    Réponses: 2
    Dernier message: 20/07/2004, 16h03
  5. Comment créer une Table dans 1 Bdd ACCESS avec Builder??
    Par makandja dans le forum C++Builder
    Réponses: 6
    Dernier message: 17/03/2004, 20h21

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