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 :

M.A.J d'une B.D Via Directement une DataGrid


Sujet :

VB.NET

  1. #1
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2013
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2013
    Messages : 121
    Points : 77
    Points
    77
    Par défaut M.A.J d'une B.D Via Directement une DataGrid
    Bonjour tous le monde

    J'ai chargé mon DataGrid et tout va bien. Voici 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
     Cn.Open() 'Ouverture de la connexion
                    Cmd.CommandType = CommandType.Text
                    Cmd.CommandText = "Select TPersCertifs.DateCertifs, Certifs.TypesCertifs, TPersCertifs.MotifCertifs From TPersCertifs INNER JOIN Certifs ON TPersCertifs.CodeCertifs = Certifs.CodeCertifs Where CIN = " & TXTCIN.Text & " Order By TPersCertifs.DateCertifs"
                    Da = New OleDb.OleDbDataAdapter(Cmd)
                    Cmd.Connection = Cn
                    Dr = Cmd.ExecuteReader
                    Dt.Load(Dr)
                    Da.Fill(Ds, "TPersCertifs")
                    Dr.Close()
                    Cn.Close()
                    DataGridCertifs.DataSource = Ds
                    DataGridCertifs.DataMember = "TPersCertifs"
                    DataGridCertifs.Columns(0).HeaderText = "Date Certificat"
                    DataGridCertifs.Columns(1).HeaderText = "Type Certificat"
                    DataGridCertifs.Columns(2).HeaderText = "Motif Certificat"

    Je voudrais remplir (Ajouter, Modifier, Supprimer...) ma table directement Via ma DataGrid.

  2. #2
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2013
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2013
    Messages : 121
    Points : 77
    Points
    77
    Par défaut M.A.J d'une B.D Via Directement une DataGrid
    Bonjour

    Est-ce que ma question est très difficile à ce point que je n'ai pas trouvé une essaye.

  3. #3
    Membre chevronné Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Points : 1 961
    Points
    1 961
    Par défaut
    Tu passes par des requêtes paramétrées (insert/delete/update) et tu boucles sur les Rows de ton DGV en les appliquant. (Ou pas si c'est un delete d'une seule ligne, ou insert d'une seule, etc)

    N'oublie pas que les colonnes de ton DGV doivent être du même type que celles de ta BDD.
    Aider les autres, c'est encore la meilleure façon de s'aider soi-même. Martin Gray

    ToDo : Faire une ToDo List

  4. #4
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2013
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2013
    Messages : 121
    Points : 77
    Points
    77
    Par défaut
    Merci Ez3kiel de m'avoir répondu
    je sais passer par des requêtes paramétrées (insert/delete/update) mais sans jointure.
    ici ma requête contienne une jointure c.a.d je dois afficher le Nom du certif mais dans le sauvegarde je doit enregistrer le code du certif dans la base.

    remarque: l'insertion ou la suppression d'un seul ligne seulement

    Merci

  5. #5
    Membre chevronné Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Points : 1 961
    Points
    1 961
    Par défaut
    Lors du remplissage de ton DGV, tu peux passer ton code certif dans la property Tag des DataGridViewRow, ainsi tu auras des paires key/value (code certif / Nom certif) et donc tu feras ta requête avec le Tag de la ligne qui contiendra le code certif.
    Aider les autres, c'est encore la meilleure façon de s'aider soi-même. Martin Gray

    ToDo : Faire une ToDo List

  6. #6
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2013
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2013
    Messages : 121
    Points : 77
    Points
    77
    Par défaut
    merci mon frère de t'avoir intéresser à ma question.

    SVP a-tu un petit exemple de ce TAG pour que je puisse comprendre un peu.

    Merci d'avance pour tout.

  7. #7
    Membre chevronné Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Points : 1 961
    Points
    1 961
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DataGridView1.Rows(0).Tag = "TonCode"
    Dans l'exemple, la ligne 0 a pour Tag "TonCode", mais dans ton cas, ce sera l'identifiant unique. Il est stocké mais n’apparaît pas sur l'interface.

    Ainsi dans ta requête tu pourras le récupérer et le passer en paramètre.

    EDIT: Ou 2ème solution, dans ta requête de remplissage de ton DGV tu rajoutes le champs des identifiants, tu rajoutes une colonne à ton DGV pour stocker les identifiants, et tu la rends invisible
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DataGridCertifs.Columns(0).Visible =  True
    Aider les autres, c'est encore la meilleure façon de s'aider soi-même. Martin Gray

    ToDo : Faire une ToDo List

  8. #8
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2013
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2013
    Messages : 121
    Points : 77
    Points
    77
    Par défaut
    Salut

    Dans Ma Form_Load

    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
      Cn.Open() 'Ouverture de la connexion
                    Cmd.CommandType = CommandType.Text
                    Cmd.CommandText = "Select TPersCertifs.DateCertifs, Certifs.TypesCertifs, TPersCertifs.MotifCertifs From TPersCertifs INNER JOIN Certifs ON TPersCertifs.CodeCertifs = Certifs.CodeCertifs Where CIN = " & TXTCIN.Text & " Order By TPersCertifs.DateCertifs"
                    Da = New OleDb.OleDbDataAdapter(Cmd)
                    Cmd.Connection = Cn
                    Dr = Cmd.ExecuteReader
                    Dt.Load(Dr)
                    Da.Fill(Ds, "TPersCertifs")
                    Dr.Close()
                    Cn.Close()
                    DataGridCertifs.DataSource = Ds
                    DataGridCertifs.DataMember = "TPersCertifs"
                    DataGridCertifs.Columns(0).HeaderText = "Date Certificat"
                    DataGridCertifs.Columns(1).HeaderText = "Type Certificat"
                    DataGridCertifs.Columns(2).HeaderText = "Motif Certificat"
    Pour le remplissage de DataGrid c'est réussi

    Dans Une bouton Update

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Da.Update(Ds, "TPersCertifs")
    le message d’erreur suivant apparaît:

    Update requiert un UpdateCommand valide lors du passage de la collection DataRow avec des lignes modifiées.

    J'ai suivi le cours de Philippe Lasserre Page 1065 à 1067

    pour moi ??????

  9. #9
    Membre chevronné Avatar de _Ez3kiel
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    836
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 836
    Points : 1 961
    Points
    1 961
    Par défaut
    Ta clé primaire se trouve-t-elle dans l'update ?

    As-tu bien instancié ton updateCommand ?
    Aider les autres, c'est encore la meilleure façon de s'aider soi-même. Martin Gray

    ToDo : Faire une ToDo List

  10. #10
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Cela fait longtemps que je n'utilise plus les datasets mais, si mes souvenirs sont bons, avec une requête de sélection portant sur plusieurs tables, le dataset n'est pas capable de généré lui-même les requêtes de mise à jour (aussi bien insert, qu'update que delete).

    Personnellement, lorsque je travaillais avec des datasets, je travaillais systématiquement avec des procédures stockées et j'utilisais ces dernières pour configurer le composant DataAdapter en lui spécifiant spécifiquement ce qu'il devait utiliser pour chaque type de requête (insert/select/update/delete).

    De cette manière, aucun souci.
    Kropernic

  11. #11
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2013
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2013
    Messages : 121
    Points : 77
    Points
    77
    Par défaut
    Salut

    Pouvez vous me guider un peu S.V.P ?

  12. #12
    Membre du Club
    Homme Profil pro
    Retraité
    Inscrit en
    Septembre 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Septembre 2005
    Messages : 28
    Points : 44
    Points
    44
    Par défaut
    Bonjour,
    Voilà ce que j'utilise avec une base Access, pour la mettre à jour avec une grille vb net.
    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
     
    Imports System.Data
    Imports System.Data.OleDb
    Imports System.Net
     Public MonAdapter As New OleDb.OleDbDataAdapter("select * from mabase", Connection)
    rem mabase=nom de ma base 
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            REM grille------>base
            Connection.ConnectionString = "provider=microsoft.jet.oledb.4.0;" & _
            "data source= " & Application.StartupPath & "\" & "mabase.mdb;"
            Connection.Open()
            'Création CommandBuilder 
            Dim CmdBuild As OleDbCommandBuilder
            CmdBuild = New OleDb.OleDbCommandBuilder(MonAdapter)
            'On génère l'update entre le dataSet et la base de donnée
            MonAdapter.UpdateCommand = CmdBuild.GetUpdateCommand()
            MonAdapter.Update(MonDataSet, "mabase")
            Connection.Close()
     
            MsgBox("Mise à jour de la base effectuée ", vbOKOnly, "Confirmation")
            sauver = True
     
        End Sub

  13. #13
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Citation Envoyé par JetLibre Voir le message
    Salut

    Pouvez vous me guider un peu S.V.P ?
    Quel est votre SGDBR ?
    Kropernic

  14. #14
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2013
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2013
    Messages : 121
    Points : 77
    Points
    77
    Par défaut
    Salut

    J'utilise VS 2012 et Access 2007 comme Base

    Merci.

  15. #15
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Dans Access, crée les procédures stockées nécessaires à faire les actions que tu veux réaliser avec ton dataset (select pour le remplir ; insert, update et delete pour la mise à jour).

    Dans ton dataset en mode design dans VS, ajoute un TableAdapter, fais un clic droit dessus et choisis Configurer.

    Là, tu suis le wizard (que je ne connais plus par coeur mais c'est pas bien dur et sinon, google est ton ami) pour indiqué au TableAdapter la procédure stockée (que tu as donc créée dans Access) qu'il doit utilisé pour chaque type d'ordre (select, insert, update et delete). Il n'est pas obligatoire de les spécifier tous.

    Il saura alors quoi faire lors d'un update ou insert si ta requête de sélection effectue des jointures sur plusieurs tables.
    Kropernic

  16. #16
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2013
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Avril 2013
    Messages : 121
    Points : 77
    Points
    77
    Par défaut
    Salut

    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
    Imports System.Data
    Imports System.Data.OleDb
    Imports System.Net
     Public MonAdapter As New OleDb.OleDbDataAdapter("select * from mabase", Connection)
    rem mabase=nom de ma base 
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            REM grille------>base
            Connection.ConnectionString = "provider=microsoft.jet.oledb.4.0;" & _
            "data source= " & Application.StartupPath & "\" & "mabase.mdb;"
            Connection.Open()
            'Création CommandBuilder 
            Dim CmdBuild As OleDbCommandBuilder
            CmdBuild = New OleDb.OleDbCommandBuilder(MonAdapter)
            'On génère l'update entre le dataSet et la base de donnée
            MonAdapter.UpdateCommand = CmdBuild.GetUpdateCommand()
            MonAdapter.Update(MonDataSet, "mabase")
            Connection.Close()
     
            MsgBox("Mise à jour de la base effectuée ", vbOKOnly, "Confirmation")
            sauver = True
     
        End Sub
    sauver = True ??????

    sauver est ce une procédure à appeler ou une commande interne propre à VS12

Discussions similaires

  1. Réponses: 7
    Dernier message: 19/09/2013, 16h23
  2. Réponses: 2
    Dernier message: 18/02/2012, 20h01
  3. Réponses: 1
    Dernier message: 08/01/2010, 13h46
  4. Réponses: 0
    Dernier message: 18/08/2009, 15h49
  5. Réponses: 1
    Dernier message: 11/02/2009, 06h33

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