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 :

Manipuler une BD en VB avec TableDataGridview


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Architecte matériel
    Inscrit en
    Septembre 2015
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte matériel

    Informations forums :
    Inscription : Septembre 2015
    Messages : 23
    Par défaut Manipuler une BD en VB avec TableDataGridview
    Bonjour,

    Je cherche à comprendre de façon simple le fonctionnement avec Visual Studio 2015 d'une base de données SQL server.

    J'ai crée une base de données qui se nomme Base_test avec une table comportant 3 colonnes(Nom, prénom et age) nommée Table.
    Jusque là tout va bien enfin je pense !!

    A la suite de ça, j'ai inséré sur ma Form une TableDataGridview ce qui m'a crée automatiquement le TableadapterManager, Tabletableadapter TableBindingsource et Base_testDataset1. J'ai inséré un TableBindingNavigator pour voir le fonctionnement.


    Voilà où j'en suis après des heures de lectures. Quand je lance mon exe, les données sont bien affichées dans TableDataGridview car elle est liée mais je n'arrive pas à ajouter une ligne supplémentaire dans ma base de données alors que dans ma TableDataGridview elle y est.

    Mon code est devenu simple à force de ne rien trouver:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     Me.Base_de_testDataSet1.Tables("Table").Rows.Add("DUPONT", "Roger", "45")
     Me.Validate()
            Me.TableBindingSource.EndEdit()
            Me.TableAdapterManager.UpdateAll(Me.Base_de_testDataSet1)
    Quelqu'un peut il m'expliquer comment résoudre mon problème ?

    Merci.

  2. #2
    Membre averti
    Homme Profil pro
    Architecte matériel
    Inscrit en
    Septembre 2015
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte matériel

    Informations forums :
    Inscription : Septembre 2015
    Messages : 23
    Par défaut J'ai trouvé !!!
    Je vous livre mon code qui vaut ce qu'il vaut mais ça fonctionne !!

    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
    Imports System.Data.SqlClient
     
     Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
     
            Dim connexion As New SqlConnection("Data Source=(LocalDB)\MSSQLLocalDB ; AttachDbFilename=C:xxxxx\xxxx.mdf;Integrated Security=True;Connect Timeout=30")  'je pointe ma connexion sur ma BD
     
            Try
     
    ' j'ouvre la connexion
                connexion.Open()
            Catch ex As Exception
                MessageBox.Show("Erreur de connexion", "Erreur", MessageBoxButtons.OK)
                Me.Close()
            End Try
     
            Dim reference, designation, sn, requette As String
            Dim datej As Date
            reference ="truc 1"
            designation = "truc 2"
            sn = "truc3"
            datej = "12/12/2012"
     
            requette = "insert into matable(date_saisie,réf,designation,SN,stock) values('" & datej & "','" & reference & "','" & designation & "','" & sn & "','un texte')"     'je crée ma requette
     
            Dim command As New SqlCommand(requette, connexion)
            Try
                command.ExecuteNonQuery()      ' je valide ma requette
                MsgBox("Fiche enregistrée", vbOKOnly)
     
                Me.TableAdapter.Fill(Me.monDataSet.matable)  'ici j'essaie de mettre à jour ma datagrid mais ça marche pas
                'Me.DataGridView.Refresh()
     
            Catch ex As Exception
                MessageBox.Show(ex.ToString & "Erreur lors De l'ajout ", "erreur", MessageBoxButtons.OK, MessageBoxIcon.Error)
            End Try
     
        End Sub
    Dans mon code je peine toujours à réactualiser mon datagrid qui n'affiche pas la donnée derniérement saisie


    Je me remercie pour cette aide !!

  3. #3
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2013
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 563
    Par défaut
    Citation Envoyé par ClemGreg Voir le message
    Je me remercie pour cette aide !!


    Si j'aurais un conseil à donner, ce serait d'ajouter une "couche" à ton modèle. Actuellement, tu affiches la base de données telle quel sur ton DataGridView et tu effectues des opérations dessus. Tu pourras vite te retrouvé embêté : exceptions si le format de donnée n'est pas correct, complications en cas de besoin de gérer l'affichage des données ou de contrôler celles-ci avant modification dans la base de données.

    L'idée serait donc de récupérer les valeurs dans une liste d'objets (où un objet correspondrait à un enregistrement en base) et de "binder" ton DataGridView sur cette liste.

  4. #4
    Membre averti
    Homme Profil pro
    Architecte matériel
    Inscrit en
    Septembre 2015
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte matériel

    Informations forums :
    Inscription : Septembre 2015
    Messages : 23
    Par défaut
    Je ne suis pas un expert dans ce domaine et je débute avec Visual Studio et SQL server.

    Je comprends bien ton idée et elle m'intéresse, mais je vois pas comment tu procéderais.
    Il est vrai que quand je fais un enregistrement dans ma BD, ce dernier n'est pas affiché dans mon datagrid ce qui est un gros problème.
    jusqu'à présent j'ai pas trouvé de solution mais si tu as un bout de quelque chose pour me faire avancer je t'en remercie.

  5. #5
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2013
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 563
    Par défaut
    Citation Envoyé par ClemGreg Voir le message
    Je comprends bien ton idée et elle m'intéresse, mais je vois pas comment tu procéderais.
    jusqu'à présent j'ai pas trouvé de solution mais si tu as un bout de quelque chose pour me faire avancer je t'en remercie.
    Tu peux, dans un premier temps, regarder comment exécuter une simple requête Select en .NET. Ensuite, en prévision de tes futurs besoins, faire les requêtes CRUD (Create Read Update Delete). Une fois que tu arrives a faire tes requêtes "brutes" avec .NET, il faudra que tu créés des objets pour contenir les valeurs (une recherche sur le terme DTO devrait t'en apprendre plus).

    Dernière étape, afficher ce que tu as dans tes objets dans ton Winform ! Tu ne manipuleras ainsi que des objets de données à ta guise

  6. #6
    Membre averti
    Homme Profil pro
    Architecte matériel
    Inscrit en
    Septembre 2015
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte matériel

    Informations forums :
    Inscription : Septembre 2015
    Messages : 23
    Par défaut
    Ok merci pour tes recommandations, mais là j'ai un datagridview lié donc quand je fais un ajout avec ma requette "insert into.... je viens bien ajouter dans ma BD cette ligne.
    Ce que je n'arrive pas à comprendre c'est comment faire pour que cette ligne apparaisse dans ma DGV.
    Si ma base est modifiée avec insert, ma commande Me.TableAdapter.Fill(Me.monDataSet.matable) devrait mettre à jour ma tableadapter et donc ma DGV ?

    C'est là que je me perds je pense.
    Si tu as un bout de code à me proposer pour que je comprenne mieux le cheminement je suis preneur.

    Merci à toi.

    Bonne fêtes !!

Discussions similaires

  1. Manipuler une boite de dialogue avec vba
    Par novice_prime dans le forum Contribuez
    Réponses: 0
    Dernier message: 14/03/2013, 13h02
  2. Manipuler une ontologie OWL-s avec Java ?
    Par kiki230 dans le forum Services Web
    Réponses: 5
    Dernier message: 04/06/2012, 16h46
  3. manipuler une table access sous Vb.net avec commande SQL
    Par vb.net.2008 dans le forum VB.NET
    Réponses: 5
    Dernier message: 29/01/2009, 09h44
  4. manipuler une Vue avec une autre classe
    Par Thelo dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 02/05/2008, 11h46
  5. manipuler une BDD mysql avec eclipse
    Par Mounr dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 19/06/2007, 01h36

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