moi411
Messages postés179Date d'inscriptionsamedi 22 novembre 2003StatutMembreDernière intervention25 juin 2017
-
10 juin 2006 à 21:44
vblam
Messages postés2Date d'inscriptiondimanche 27 février 2005StatutMembreDernière intervention24 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
vblam
Messages postés2Date d'inscriptiondimanche 27 février 2005StatutMembreDernière intervention24 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