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 :

Insertion d'information d'une table de BD dans un datagridview


Sujet :

VB.NET

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 18
    Par défaut Insertion d'information d'une table de BD dans un datagridview
    Bonjour,

    J'ai, dans ma base de données, une table avec une liste d'adhérents où sont fournis leur coordonnées, leur numéro d'adhérents etc...

    et j'aimerais que dans ma form, il y est un datagridview où là table s'affiche entièrement avec toutes les données.
    J'ai trouver un site qui explique exactement ce que je veut faire mais après avoir fait mes modifications directement dans le datagridview et avoir cliqué sur le petit logo "enregistrer" et que je quitte mon application, rien n'est sauvegarder lorsque je la réutilise. voici l'adresse du site :

    http://plasserre.developpez.com/v6-6.htm ( dans la rubrique "C - Remplir un DataGrid avec une base de données sans une ligne de code (VB 2005)" ) quel titre alléchant nan ? :p

    Enfin voilà, alors peut être existe t-il une méthode plus simple sans dataset, mais je trouve sa méthode assez simple et carrément adéquate pour mon utilisation.

    Merci encore :

  2. #2
    Membre Expert
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 184
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 184
    Par défaut
    Bonjour.

    Question bête : y'a du code derriére le "petit logo "enregistrer"" ? Car c'est pas évident que l'update soit directement définit par le designer lors de l'ajout du DGV.

    Cdt.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 18
    Par défaut
    Oui, le bouton enregistrer à le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub ADHERENTBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ADHERENTBindingNavigatorSaveItem.Click
            Me.Validate()
            Me.ADHERENTBindingSource.EndEdit()
            Me.ADHERENTTableAdapter.Update(Me.BdthequeDataSet.ADHERENT)
     
        End Sub
    Et quand je fait des modification dans le datagridview, elles ne sont pas sauvegardées d'une exécution à une autre. Sauf si je double-click sur le fichier .exe qui se trouve dans le debug, mais a ce moment là je pense que les données sont gardées dans une mémoire mais que la base de données elle-même n'est pas sauvegardée.

  4. #4
    Membre expérimenté Avatar de Faladin
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    333
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2007
    Messages : 333
    Par défaut
    J'ai eu le même problème...

    Ce code généré par VB ne semble pas super, si tu delete une ligne aussi ça va faire planter la fenêtre en enregistrant!!!

    Moi j'ai fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
                'On crée la commande d'update de la table avec le DA
                Dim objetCB = New SqlServerCe.SqlCeCommandBuilder(Tableau.DA)
                Tableau.DA.Update(Tableau.DataSet1, nom_table)
                'Refresh du dataset pour afficher la table modifiée
                Tableau.DataSet1.Clear()
                Tableau.DA.Fill(Tableau.DataSet1, nom_table)
                connection.Close()
                flag = True
    note:
    • Tableau = fenêtre de mon DGV
    • DA = dataadapter
    • nom_table passé en paramètre


    Le tout dans un try catch bien sûr!

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 18
    Par défaut
    Les lignes de codes que tu donne sont sensées copier ce qui se trouve dans le datagridview dans la table de ta base de données ? Parce que je ne vois pas exactement ce qui est pareil entre mon code et le tiens car tu fais un update et juste après un fill

  6. #6
    Membre expérimenté Avatar de Faladin
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    333
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2007
    Messages : 333
    Par défaut
    Le dataset.clear et ensuite le fill ne font qu'updater le DGV pour refléter les derniers changements apporter à ma table source

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 18
    Par défaut
    ok, mais c'est pas exactement pareil que mon problème nan ? moi c'est la sauvegarde dans la BD qui ne se fait pas

  8. #8
    Membre expérimenté Avatar de Faladin
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    333
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2007
    Messages : 333
    Par défaut
    Moi j'update la table que je travaillais dessus dans mon DGV vers ma BD, si c'est pas ça que tu voulais je comprends pas...

  9. #9
    Membre expérimenté Avatar de Faladin
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    333
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2007
    Messages : 333
    Par défaut
    Petite question comme ça, c'est quoi le "connectionstring" vers ta base de donnée?

    Comment déclare tu cette connection?

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 18
    Par défaut
    Citation Envoyé par Faladin Voir le message
    Moi j'update la table que je travaillais dessus dans mon DGV vers ma BD, si c'est pas ça que tu voulais je comprends pas...
    Si c'est exactement sa que je veux faire, mais je n'ai pas très bien compris ton code, peut être car je travail avec access

    Citation Envoyé par Faladin Voir le message
    Petite question comme ça, c'est quoi le "connectionstring" vers ta base de donnée?

    Comment déclare tu cette connection?
    ma chaine de connection est générée automatiquement par visual studio lorsque je fais: données-> ajouter une nouvelle source de données:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\Resources\bdtheque.mdb;Persist Security Info=True
    la connextion est déclarée avec la méthode présente sur le site :
    http://plasserre.developpez.com/v6-6.htm

    Au chapitre : C - Remplir un DataGrid avec une base de données sans une ligne de code (VB 2005):

  11. #11
    Membre Expert
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 184
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 184
    Par défaut
    Bonjour.

    Est-ce que tu as un commandbuilder ? Sans quoi ça ne marchera pas.

    Cdt.

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 18
    Par défaut
    Citation Envoyé par olsimare Voir le message
    Bonjour.

    Est-ce que tu as un commandbuilder ? Sans quoi ça ne marchera pas.

    Cdt.
    Humm, non je ne pense pas, le code qui a été généré se résume à sa ( le nom de la table est ADHERENT):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
        Private Sub ADHERENTBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ADHERENTBindingNavigatorSaveItem.Click
            Me.Validate()
            Me.ADHERENTBindingSource.EndEdit()
            Me.ADHERENTTableAdapter.Update(Me.BdthequeDataSet.ADHERENT)
     
        End Sub
     
        Private Sub Form2_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 'BdthequeDataSet.ADHERENT'. Vous pouvez la déplacer ou la supprimer selon vos besoins.
            Me.ADHERENTTableAdapter.Fill(Me.BdthequeDataSet.ADHERENT)
     
        End Sub
    Et lorsque je fait la manipulation du site, j' obtient ces éléments;
    -Nom_BDDataset
    -ADHERENTBrindingSource
    -ADHERENTTableAdapter
    -ADHERENTBrindingNavigator
    et un datagriedview qui est rempli de tous les éléments qui se trouve dans ma table adhérent, avec une barre de navigation au dessus (sauvegarder, ajouter, annuler etc...)

  13. #13
    Membre Expert
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 184
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 184
    Par défaut
    Re.

    Citation Envoyé par Noodles95 Voir le message
    Humm, non je ne pense pas
    Il faut le rajouter donc --> cf. l'exemple de Faladin.

    Cdt.

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 18
    Par défaut
    Et ce même si je travail sur une base de données access ?

  15. #15
    Membre Expert
    Avatar de olsimare
    Inscrit en
    Décembre 2006
    Messages
    1 184
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 184
    Par défaut
    Bonjour.

    Et oui, mais dans ce cas ça sera un OleDBCommandBuilder.

    Cdt.

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 18
    Par défaut
    Citation Envoyé par olsimare Voir le message
    Bonjour.

    Et oui, mais dans ce cas ça sera un OleDBCommandBuilder.

    Cdt.
    D'accord, donc il faut que j'insère le code de Falafin dans le code du bouton sauvegarder ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     Private Sub ADHERENTBindingNavigatorSaveItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ADHERENTBindingNavigatorSaveItem.Click
    'ligne présente lors de la création automatique de visualstudio
            Me.Validate()
    'ligne présente lors de la création automatique de visualstudio
            Me.ADHERENTBindingSource.EndEdit()
    'ligne présente lors de la création automatique de visualstudio
            Me.ADHERENTTableAdapter.Update(Me.BdthequeDataSet.ADHERENT)
     
            Dim objetCB = New OleDbCommandBuilder(Tableau.DA)
            Tableau.DA.Update(Tableau.DataSet1, ADHERENT)
            Tableau.DataSet1.Clear()
            Tableau.DA.Fill(Tableau.DataSet1, ADHERENT)
            connection.Close()
        End Sub
    mais ce que je comprends pas c'est que je dois créer une connexion vers ma base de données alors que je suis en mode déconnecté ? car le code de Faladin précise qu'il faut fermer la connexion.

    Je sais pas si je suis très clair mais en partant de la manipulation du site internet, je ne sais pas vraiment où insérer les lignes de codes.

    Merci encore de m'aider comme vous le faites

  17. #17
    Membre expérimenté Avatar de Faladin
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    333
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2007
    Messages : 333
    Par défaut
    Effectivement, sans quoi sans fonctionne pas, mais comme dit plus haut, les commandes pour Access sont différentes de ce que j'ai utilisé (Moi c'était SQL Server CE), donc justement regarde du côté des OleDB......

    Pour ta connection string, demande moi pas pourquoi, je comprends pas encore, mais le fait d'utiliser:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Source=|DataDirectory|\Resources\bdtheque.mdb
    m'a causé des ennuis. En effet, la BD ne semble pas bien s'updater avec le raccourci |DataDirectory|, essai avec la ligne complète (C:\....\\bdtheque.mdb).

    J'ai essayé à maintes reprises et lorsque je met la ligne complète, ça fonctionne tout le temps (les commandes d'enregistrement, je parle ici) et lorsque j'utilise le raccourci c'est plutôt intermittent comme enregistrement je dirais...

    Par contre, je ne peux pas t'expliquer pourquoi...

  18. #18
    Membre expérimenté Avatar de Faladin
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    333
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2007
    Messages : 333
    Par défaut
    Ma réponse est arrivé en même temps que ta dernière, pour la connection.close(), oui tu dois ouvrir la connection avant d'updater ta table, sinon le lien ne se fait pas

    Donc en quelquepart j'avais sûrement connection.open() avant.

    Ça devrait ressembler à ceci (mais avec des commandes pour Access!!)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Public Shared connectstring As String = "Data Source=C:\Documents and Settings\jsicard\My Documents\Visual Studio 2008\Projects\Gestion dynamique\Gestion dynamique\DBLigne.sdf"
        Private Shared connection As New SqlServerCe.SqlCeConnection(connectstring)

  19. #19
    Membre averti
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 18
    Par défaut
    Ok c'est bon ... pfiouuu
    Pour ceux qui veulent savoir comment faire par la suite: regarder plutôt la partie B du site suivant : http://plasserre.developpez.com/v6-6.htm

    Ne faites pas confiance à visual studio ^^ et faites ça à la main.

    En tout cas merci à ceux qui m'ont aidé

  20. #20
    Membre expérimenté Avatar de Faladin
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    333
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2007
    Messages : 333
    Par défaut
    Ouais!

    Pas de problème Noodle, j'ai bucher assez longtemps la-dessus, si je peux éviter ça à quelqu'un! J'espère que tout fonctionne bien!

    Le site de P. Lasserre est assez excellent, effectivement!

    Oubli pas de mettre Résolu!

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 29/05/2008, 21h35
  2. Insertion des enregistrements d'une table temporaire dans un état
    Par Chayanne47 dans le forum Composants VCL
    Réponses: 4
    Dernier message: 18/04/2008, 11h46
  3. insertion dans une table puis update dans une autre table
    Par uptoditime dans le forum VBA Access
    Réponses: 5
    Dernier message: 10/10/2007, 18h08
  4. Comment avoir des informations sur une table ?
    Par Shogun dans le forum Oracle
    Réponses: 2
    Dernier message: 09/01/2007, 15h40
  5. INSERT avec condition d'une table à une autre
    Par papipasto dans le forum Langage SQL
    Réponses: 2
    Dernier message: 28/03/2006, 13h51

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