Mise à jour de base de données access en vb.net

moi411 Messages postés 179 Date d'inscription samedi 22 novembre 2003 Statut Membre Dernière intervention 25 juin 2017 - 10 juin 2006 à 21:44
vblam Messages postés 2 Date d'inscription dimanche 27 février 2005 Statut Membre Dernière intervention 24 septembre 2006 - 24 sept. 2006 à 15:55
                  Tout d'abord bonsoir,
J'ai donc un problème pour mettre à jour une base de données (créée avec access) ) partir d'un programme VB.NET. J'ai fait la connexion et tout ce qu'il faut (en tous cas je crois) et quand je clique sur mon bouton de mise à jour j'une erreur qui me dit:

" Dynamic SQL generation for the UpdateCommand is not supported against a SelectCommand that does not return any key column information. "

...je comprends ce qui est écrit mais je ne comprends pourquoi...

Je dépose (tout) le code ici en espérant que qqun pourra m'aider...

Dim cmdb As OleDbCommandBuilder  'Pour recompiler les données modifiées avant de les        
                                                                remettre dans le "DataAdapter"
    Dim conn As OleDbConnection        'Déclaration Objet Connexion
    Dim cmd As OleDbCommand          'Déclaration Objet Commande
    Dim dtad As OleDbDataAdapter      'Déclaration Objet DataAdapter
    Dim dtab As DataTable                    'Déclaration Objet DataTable
    Dim sql As String                              'String contenant la 'Requête SQL'
    Dim strConn As String                      'Paramêtres de connexion à la DB
    Dim dtrd As OleDb.OleDbDataReader  'remplace le dataset
    Dim drow As DataRow                    'Déclaration Objet DataRow (ligne)
    Dim numligne As Integer                   'Numéro de la ligne en cours
    Dim ds As New DataSet

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

        'Connexion à la base de données
        strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                        "Data Source= base.mdb;"
        sql = "Select table.* FROM table"
        conn = New OleDbConnection    
        conn.ConnectionString = strConn 
        conn.Open()                   
        cmd = New OleDbCommand(sql)     
        dtad = New OleDbDataAdapter(cmd)
        cmd.Connection() = conn        
        dtad.Fill(ds, "table")         
        dtab = ds.Tables("table")    

        'Mise à jour de la base
        'NumLigne est défini dans une autre fonction
        drow = ds.Tables("table").Rows(numligne)
        drow("champ") = TextBox1.text
        cmdb = New OleDbCommandBuilder(dtad)
        dtad.Update(ds, "table")
        ds.Clear()
        conn.Close()
    End Sub
End Class

Je vous remercie d'avance et à bientôt.
moi

1 réponse

vblam Messages postés 2 Date d'inscription dimanche 27 février 2005 Statut Membre Dernière intervention 24 septembre 2006
24 sept. 2006 à 15:55
j'ai    un problème de mise à jour en mode déconnecté.  mais une fois j'ai utilisé le mode connecté j'ai reussi à le régler.


mon exemple était :
' jai utilisé une table acces à 2 champs, cpt_ana (10 pos numeric) et libelle (20 pos text)
Public Class Form1
Inherits System.Windows.Forms.Form


    Dim oledbconnection1 As New OleDb.OleDbConnection
    Dim oledbcommand1 As New OleDb.OleDbCommand
    Private Sub connectButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles connectButton.Click


        oledbconnection1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\airalgerie\bd1.mdb"


        oledbconnection1.Open()




        MessageBox.Show("ok connection établie")


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


        oledbcommand1.Connection = oledbconnection1


        oledbcommand1.CommandText = "insert into comptes (cpt_ana,libelle) values (@cpt_ana,@libelle)"
        oledbcommand1.Parameters.Add("@cpt_ana", OleDb.OleDbType.VarChar)
        oledbcommand1.Parameters.Add("@libelle", OleDb.OleDbType.VarChar)
        oledbcommand1.Parameters("@cpt_ana").Value = Txtcompte.Text
        oledbcommand1.Parameters("@libelle").Value = txtlibelle.Text
        oledbcommand1.ExecuteNonQuery()
        MessageBox.Show("insertion réussie")
   End Sub
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        oledbcommand1.Connection = oledbconnection1


        oledbcommand1.CommandText "update  comptes set libelle '" & txtlibelle.Text & "' where cpt_ana = '" & Txtcompte.Text & "'"
        OleDb.OleDbType.VarChar)
        OleDb.OleDbType.VarChar)
         oledbcommand1.ExecuteNonQuery()
        MessageBox.Show("mise-à-jour réussie")
    End Sub
      oledbcommand1.Connection = oledbconnection1        oledbcommand1.CommandText "delete from comptes where cpt_ana '" & Txtcompte.Text & "'"
        oledbcommand1.ExecuteNonQuery()
        MessageBox.Show("Suppression réussie")
End Class

si quelqu'un peut m'éclairer pour le faire en mode deconnecté ..... Merci
0
Rejoignez-nous