lex1111
Messages postés220Date d'inscriptionjeudi 30 mars 2006StatutMembreDernière intervention26 octobre 2007
-
21 nov. 2006 à 21:37
l0r3nz1
Messages postés218Date d'inscriptionmercredi 20 février 2008StatutMembreDernière intervention17 mars 2012
-
5 août 2008 à 13:46
Salut,
je cherche à faire un update spécial en utilisant oledb sur une base de donnée access en vb2005
En fait, je veux faire un update sur plusieurs lignes de ma base de donnée en passant par un dataset
dim con As New OleDb.OleDbConnection
dim da As OleDb.OleDbDataAdapter
dim dc As OleDb.OleDbCommand
dim ds As New DataSet
dim dt As DataTable
dim dr As DataRow
sql = "...................." da = New OleDb.OleDbDataAdapter(sql, connection)
'recupere les donnees dans le ds
ds.Clear()
da.Fill(ds)
'ici je fais plein de modifications sur plusieurs lignes (rows) de la dataset...
da.update(ds) 'je met a jour les modifications
-------------------------------------------------
Mais je n'arrive pas a trouver une requete sql valide...une idée ?
l0r3nz1
Messages postés218Date d'inscriptionmercredi 20 février 2008StatutMembreDernière intervention17 mars 2012 5 août 2008 à 13:46
En effet vb2005 differe pas mal, il est plus lourd pour le code:
il faut:
creer un dataset
un dataAdapter
une connection
un objet commande
un objet commande builder
ouvrir la connexion
remplir le dataset
C'est pour une connexion sur sql serveur pour changer, on utilise les objets sqlTRUC au lieu de oledbTRUC
Voici une procédure assez pratique;
connection AsNew SqlConnection(getStringCon(bdd))
Dim adapter AsNew SqlDataAdapter()
adapter.SelectCommand New SqlCommand("select * from " & table & " where [" & table & "].[" & champCondition & "] '" & valeurCondition & "'", connection)
'ou
'adapter.SelectCommand = New SqlCommand(une_requete
, connection)
Dim builder As SqlCommandBuilder = New
SqlCommandBuilder(adapter)
Try
connection.Close() '
au cas ou une connexion est encore ouverte
Catch ex As Exception
End
Try
connection.Open()
Dim
dataSet As DataSet = New DataSet
adapter.Fill(dataSet, table)
Dim
i, countFor
For countFor = 0 To dataSet.Tables(0).Rows.Count - 1
For i = 0 To dataSet.Tables(0).Columns.Count - 1
dataSet.Tables(0).Rows(countFor).Item(dataSet.Tables(0).Columns.IndexOf(champCible)) = "" & valeurNouvelle
Next
Next
Try
adapter.Update(dataSet, table)
Catch ex As Exception
If ex.ToString <> ""Then dataSet.RejectChanges()
MsgBox(ex.ToString)
EndTry
connection.Close()
End
Using
End
Sub
On peut aussi creer des autres objet "table" "ligne" et "colonne" et ... Il est donc assez lourd mais complet même si desfois on bloque on ne comprend plus vraiment pourquoi ( droits, serveur...)