Mise a jour d'une bd a partir d'un datagridview par programmation

vblover Messages postés 57 Date d'inscription mardi 25 février 2003 Statut Membre Dernière intervention 27 janvier 2011 - 12 déc. 2008 à 17:45
tovin Messages postés 164 Date d'inscription samedi 11 décembre 2004 Statut Membre Dernière intervention 14 août 2013 - 13 déc. 2008 à 07:50
Voila, le datagrid affiche normalement la table "clients" du dataset. comment repercuter les changements faits par l'utilisateur sur la base de donnees?
Je recois toujours un message d'exection lors de la mise a jour du dataset a l'instruction dap1.update(das1,"clients").
Apparemment le dataset n'a aucune table. das1.tables.count = 0, alors qu'il est egal a 1 avant l'appel du datagriview.
Merci de votre aide

Imports System.Data
Imports System.Data.OleDb

Public Class Form1

    Public dap1 As New OleDbDataAdapter
    Public das1 As New DataSet

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        dap1.Update(das1, "clients")
        End
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim strconnectstring As String = "Provider=Microsoft.Jet.OLEDB.4.0;" _
         & "Data Source=D:\gestock\essai_net\stock.mdb;Jet OLEDB:Database Password=cwru"
        Dim oconn As New OleDb.OleDbConnection(strconnectstring)
        Dim strsql = "select * from clients"

        Dim cmd1 As New System.Data.OleDb.OleDbCommand()
        Dim cb As New OleDbCommandBuilder
        Dim das1 As New System.Data.DataSet()
        With cmd1
            .Connection = oconn
            .CommandText = strsql
        End With

        oconn.Open()
        dap1.SelectCommand = cmd1
        cb.DataAdapter = dap1
        dap1.Fill(das1, "clients")
        dgv.DataSource = das1.Tables("clients")
        dgv.Show()

    End Sub

  
End Class

vblover

4 réponses

tovin Messages postés 164 Date d'inscription samedi 11 décembre 2004 Statut Membre Dernière intervention 14 août 2013 3
12 déc. 2008 à 19:00
Bonjour,
Ne manque-t-il pas dans la procédure button1_click :

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(das1,"Clients")

A +
0
vblover Messages postés 57 Date d'inscription mardi 25 février 2003 Statut Membre Dernière intervention 27 janvier 2011
12 déc. 2008 à 19:13
Je viens juste d'essayer votre suggestion. Malheureusement cela ne change rien. Je recois toujour le meme message lors de l'instruction dap1.update(das1,"clients"). le message est le suivant:
Update unable to find TableMapping['clients'] or DataTable 'clients'.
Merci quand meme.

vblover
0
vblover Messages postés 57 Date d'inscription mardi 25 février 2003 Statut Membre Dernière intervention 27 janvier 2011
12 déc. 2008 à 21:35
Bon apres moult essais j'ai pu me debarasser du message d'erreur en ajoutant les 2 lignes suivantes: (juste apres l'instruction oconn.open() in the listing)

        dap1.TableMappings.Clear()
        dap1.TableMappings.Add("clients", "clients")
Aucun message d'erreur mais la mise jour n'est pas faite.
vblover
0
tovin Messages postés 164 Date d'inscription samedi 11 décembre 2004 Statut Membre Dernière intervention 14 août 2013 3
13 déc. 2008 à 07:50
Bonjour,


Et en mettant le  strconnectstring  en public après Form1 ? ou le rappeler dans button1 ?
Il me semble que la procédure du button1 n'a plus connaissance du chemin pour updater ?
A+
0
Rejoignez-nous