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 :

Importer les données d'une ligne de DataGridview dans un formulaire


Sujet :

Windows Forms

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 15
    Points : 11
    Points
    11
    Par défaut Importer les données d'une ligne de DataGridview dans un formulaire
    Bonjour à tous
    Débutant dans le VB.net

    J'ai crée une base de donnée et j'aimerais qu'un double-clic sur une ligne dans le dataGridview ouvre directement les données en question dans un formulaire pour modification, Je ne me retrouve pas dans le code qui chargera les donnée selectionnées en question vers le nouveau formulaire.

    ma méthode actuelle consiste à créer un formulaire classique d'acces aux données en mode détail , mais il faut utiliser la barre d'outils pour chercher l'enrégistrement en question (trop lourd).


    Merci pour votre aide future

  2. #2
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 84
    Points : 70
    Points
    70
    Par défaut
    Utilise l'evement double-click dans les evenements de la gridview
    et envoi un parametre qui te permet de distinguer les differentes lignes de la gridview.
    moi j'utilse le numero de mon enregistrement comme parametre a envoyer

    j'espere t'avoir aidé

    bien à vous

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 319
    Points : 414
    Points
    414
    Par défaut
    Bonjour
    Pour ton probleme, il te suffis de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Public Sub tonDGV_Mouse_DoubleClick(byval sender as object, byval e as EventArgs) Handles tonDGV.DoubleClick
    'declaration de ta requete ca je te laisse faire
    "Select * from taTable
    where tonChamp = " & tonDGV.Item(TonDGV.CurrentCellAdress.X, tonDGV.CurrentCellAdress.Y).Value
    ....
    End Sub
    Et CurrentCellAdress correspond a ta cellule
    Donc si tu veux une colonne particuliere
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tonDGV.Item([numero de colonne], tonDGV.CurrentCellAdress.Y).Value
    En esperant t'avoir aidé
    Cordialement
    Nasty
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'TODO : trouver une signature mieux que celle la

  4. #4
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Merci pour Vos interventions, chacune d'elle est très instructive. et me permet de mieux comprendre et grandir dans le domaine.

    Je me casse la tête et je reviens vers vous (Je l'espère pour vous dire que j'ai réussis)

    Tout début est difficile:ccool:

  5. #5
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Je crois que j'ai encore Beaucoup de choses à apprendre. Après des heures, parmi tous mes essais, voici ce que j'ai pu sortir et qui ne marche d'ailleur pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub BanqueDataGridView_DoubleClick(ByVal sender As Object, ByVal e As 
    System.EventArgs) Handles BanqueDataGridView.DoubleClickDim ModifieBanqueForm As New ModifieBanque
            ModifieBanqueForm.Show()
            Dim Bq_IdTextBox As String
            "select * FROM Banque
            Where(Bq_IdTextBox.text = BanqueDataGridView.Item(BanqueDataGridView.CurrentCellAddress.X, BanqueDataGridView.CurrentCellAddress.Y).Value)
    Explications:
    Le double clic sur BanqueDataGridView ouvre le formulaire ModifieBanqueForm et charge directement les champs présents (tel que Bq_IdTextBox.text) avec les données selectionnées.
    Table= Banque
    DGV=BanqueDataGridView
    Un exemple de Champ=Bq_IdTextBox.text

    Désolé de vous décevoir, mais j'y arriverais

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

    Informations forums :
    Inscription : Septembre 2009
    Messages : 319
    Points : 414
    Points
    414
    Par défaut
    re bonjour,
    C'est peut être moi qui t'ai mal orienté, toutes les informations sont déjà dans ton datagridview? (c'est ca que j'ai peut etre mal compris)
    Si oui : alors tu n'as pas besoin de faire une requete, il suffit de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    taTextBox.Text = BanqueDataGridView.Item(BanqueDataGridView.CurrentCellAddress.X, BanqueDataGridView.CurrentCellAddress.Y).Value
    Et de jouer avec les colonnes
    Si non : C'est ta requête qui est mal défini
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim requete as string = "Select * from Banque where [le nom du champs de la clé primaire] = " & BanqueDataGridView.Item(BanqueDataGridView.CurrentCellAddress.X, BanqueDataGridView.CurrentCellAddress.Y).Value
    Et ensuite tu l'exécutes

    Et ce lien peut t'etre utile aussi.
    Courage tu vas y arriver
    Cordialement
    Nasty
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'TODO : trouver une signature mieux que celle la

  7. #7
    Membre régulier
    Inscrit en
    Avril 2008
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 151
    Points : 123
    Points
    123
    Par défaut
    Alors dans la form de ton datagridview tu as juste sa:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub DataGridView2_RowHeaderMouseDoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DataGridView2.RowHeaderMouseDoubleClick
               
                Forminformation.Visible = True
    End Sub
    dans la Forminformation tu as à l'évement load cette ligne (ligne en rouge)
    Comme ceci tu récupérera une valeur de ton datagridview dans un Label


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DataGridView4.Item(1,3).Value.ToString
    1 = la deuxieme ligne de ton DGV
    3 = la 4ieme colonne

    avec sa tu aura la valeur présent à la ligne 2 dans la colonne 4.

    Pour appeler cette valeur dans une autre form tu fait simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Formdetongradview.DataGridView4.Item(1,3).Value.ToString
    et pour stocké cette valeur dans un Label tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Label.text = Formdetongradview.DataGridView4.Item(1,3).Value.ToString
    En espérant que cela t'aide.

  8. #8
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 84
    Points : 70
    Points
    70
    Par défaut
    bonjour à vous

    voici ce que je fais moi et qui marche
    - dans l'evenement double click de la datagridview j'envoi une variable

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub TblAttributionDataGridView_DoubleClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TblAttributionDataGridView.DoubleClick
            Dim frmSaisie As New frmAttribution
            frmSaisie.vNumAttribution = CInt(TblAttributionDataGridView.SelectedCells(0).OwningRow.Cells(0).Value)
            frmSaisie.Show()
            Me.Hide()
        End Sub
    - ensuite dans le load de l'autre form où on fait la modif
    je fais ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      Try
                Me.TblAttributionTableAdapter.FillBy(Me.DstExport_D.tblAttribution, vNumAttribution)
            Catch ex As System.Exception
                System.Windows.Forms.MessageBox.Show(ex.Message)
            End Try
    vNumAttribution est declarer comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public vNumAttribution as integer
    dans la form où on doit faire le modification

    j'espere aider ainsi
    bien a vous

  9. #9
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Après tous les essais, la solution que je cherchais est la dernière (ci-dessous)
    Citation Envoyé par SALIA LOUA OLIVIER Voir le message
    bonjour à vous

    voici ce que je fais moi et qui marche
    - dans l'evenement double click de la datagridview j'envoi une variable

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub TblAttributionDataGridView_DoubleClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TblAttributionDataGridView.DoubleClick
            Dim frmSaisie As New frmAttribution
            frmSaisie.vNumAttribution = CInt(TblAttributionDataGridView.SelectedCells(0).OwningRow.Cells(0).Value)
            frmSaisie.Show()
            Me.Hide()
        End Sub
    - ensuite dans le load de l'autre form où on fait la modif
    je fais ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      Try
                Me.TblAttributionTableAdapter.FillBy(Me.DstExport_D.tblAttribution, vNumAttribution)
            Catch ex As System.Exception
                System.Windows.Forms.MessageBox.Show(ex.Message)
            End Try
    vNumAttribution est declarer comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public vNumAttribution as integer
    dans la form où on doit faire le modification

    j'espere aider ainsi
    bien a vous

    mais j'ai une inquètude:
    je ne comprends pas le vNumAttribution, j'ai essayer avec cette même variable mais ça bloque au niveau du Form à modifier
    Dans le form à Modifier j'ai aussi des difficultés avec la ligne suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.TblAttributionTableAdapter.FillBy(Me.DstExport_D.tblAttribution, vNumAttribution)
    la methode Fill ou FillBy d'une part et de L'autre part DsExport_D est-ce le DataSet?? et quand j'essaie de continuer avec (,vNumAttribution) c'est un gros trait qui apparait

    je suis pourtant si proche

  10. #10
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 84
    Points : 70
    Points
    70
    Par défaut
    Bonjour à vous

    la DstExport_D c'est le nom que j'ai donnée à ma dataset relié à ma base de données. vNumAttribution c'est une variable que j'ai créé qui fait allusion a la variable Numero Attribution.

    Numero Attribution est le ID d'une table dans ma bd
    j'espere avoir repondu à ta question

    fillBy est une requete ecrite dans la datatableadapter qui a pour parametre le ID de ma table


    Bien à vous

  11. #11
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Re bonjour

    Merci pour les explications.

    Tout passe maintenant, mais le soucis, c'est que la Form à modifier apparait vierge. voici mes codes.

    derriere le DataGridView (BanqueDataGridView)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     Private Sub BanqueDataGridView_DoubleClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BanqueDataGridView.DoubleClick
            Dim ModifiebanqueForm As New UpdateBanque
            ModifiebanqueForm.Bq_Id = CInt(BanqueDataGridView.SelectedCells(0).OwningRow.Cells(0).Value)
            ModifiebanqueForm.Show()
            Me.Hide()
        End Sub

    Pour le formulaire de modification

    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
    Public Class UpdateBanque
        Public Bq_Id As Integer
        Private Sub BanqueBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BanqueBindingNavigatorSaveItem.Click
            Me.Validate()
            Me.BanqueBindingSource.EndEdit()
            Me.TableAdapterManager.UpdateAll(Me.BanqueDataSet)
     
        End Sub
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            'TODO*: cette ligne de code charge les données dans la table 'PaysLookupDataSet.Pays'. Vous pouvez la déplacer ou la supprimer selon vos besoins.
            Me.PaysTableAdapter.Fill(Me.PaysLookupDataSet.Pays)
            'TODO*: cette ligne de code charge les données dans la table 'BanqueDataSet.Banque'. Vous pouvez la déplacer ou la supprimer selon vos besoins.
            Try
                Me.BanqueTableAdapter.FillBy(Me.BanqueDataSet.Banque, Bq_Id)
     
            Catch ex As System.Exception
                System.Windows.Forms.MessageBox.Show(ex.Message)
            End Try
     
        End Sub
     
    End Class
    Avec
    Bq_Id(int) l'ID de ma table qui est différente de mon index (Bq_Nom)

  12. #12
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 84
    Points : 70
    Points
    70
    Par défaut
    Essai de mettre en commentaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ' Me.PaysTableAdapter.Fill(Me.PaysLookupDataSet.Pays)
    et tient moi informer

    merci

  13. #13
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    En mettant en commentiare c'est toujours pareil, le formulaire apparait toujours vide.

    Merci

  14. #14
    Membre à l'essai
    Inscrit en
    Octobre 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Salut à tous,

    Voici une solution qui a finalement marché.

    """""""""""""""
    Nous avons donc la contrôle DataGridView1 sur un formulaire Form1. On ajoute le deuxième formulaire Form2 avec deux champs texte, TextBox1 et TextBox2.



    J’ai fait cet exemple à partir d’une table avec deux colonnes.



    Dans le premier formulaire, il faut ajouter l’évènement CellClick au contrôle DataGridView1. Quand vous cliquez sur une cellule, une méthode sera appelée et dans ce méthode on mettra le code pour transférer les données.



    Voici la méthode appelée par l’évènement CellClick :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub DataGridView1_CellClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellClick

    Comme vous voyez, cette méthode a un paramètre e de type System.Windows.Forms.DataGridViewCellEventArgs. Ce paramètre vous donne des informations sur l’index de la ligne ou se trouve la cellule qu’on a cliquée.



    A l’intérieur de la méthode on n’a qu’à lire le nombre de la ligne, prendre les valeurs de chaque colonne et les envoyer dans le formulaire Form2.





    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
    Private Sub DataGridView1_CellClick(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellClick
     
            Dim i As Integer = e.RowIndex ‘le numero de la ligne
     
    ‘les valeurs de la colonne 1 et 2
            Dim col1 As Integer = Me.DataGridView1.Rows(i).Cells(0).Value
            Dim col2 As Integer = Me.DataGridView1.Rows(i).Cells(1).Value
     
    ‘on met les valeurs dans les textbox du Form2
            Form2.TextBox1.Text = col1
            Form2.TextBox2.Text = col2
     
    ‘on montre Form2
            Form2.ShowDialog()
     
        End Sub
    """"""""""""""""""""""""""""""""

    Source: http://social.msdn.microsoft.com/For...?prof=required

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 03/01/2011, 14h01
  2. [JDBC] Exporter et importer les données d'une table...
    Par sp3cim3nmidoban dans le forum JDBC
    Réponses: 3
    Dernier message: 21/02/2006, 19h23
  3. Importer les données d'une feuille EXCEL
    Par codial dans le forum Bases de données
    Réponses: 4
    Dernier message: 05/02/2006, 09h07
  4. importer les données d'une base access
    Par warraf dans le forum Access
    Réponses: 9
    Dernier message: 08/11/2005, 22h40
  5. importer les données d'une base oracle
    Par hossni dans le forum Décisions SGBD
    Réponses: 2
    Dernier message: 07/07/2005, 16h33

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