Sql UPDATE spécial....

lex1111 Messages postés 220 Date d'inscription jeudi 30 mars 2006 Statut Membre Dernière intervention 26 octobre 2007 - 21 nov. 2006 à 21:37
l0r3nz1 Messages postés 218 Date d'inscription mercredi 20 février 2008 Statut Membre Dernière intervention 17 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 ?

3 réponses

cavo789 Messages postés 168 Date d'inscription vendredi 9 janvier 2004 Statut Membre Dernière intervention 28 juillet 2009 1
22 nov. 2006 à 12:00
Voici ce que j'utilise dans ce type de cas:

Dim objConnection As ADODB.Connection

Set objConnection = CreateObject("ADODB.Connection")
     
objConnection.CursorLocation = adUseClient
     
objConnection.Open sDSNSFD   ' DSN vers ta base de données
   
objConnection.Execute "UPDATE TableName SET FieldName = Value"
objConnection.Close

Set objConnection = Nothing 

Christophe
0
lex1111 Messages postés 220 Date d'inscription jeudi 30 mars 2006 Statut Membre Dernière intervention 26 octobre 2007 1
22 nov. 2006 à 12:27
ADODB.Connection n'est pas défini sous vb2005, sinon j'aurais utilisé ADODB...

Une autre idée ?
0
l0r3nz1 Messages postés 218 Date d'inscription mercredi 20 février 2008 Statut Membre Dernière intervention 17 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;





Public







Sub
remplacer(
ByVal
table,
ByVal
bdd,
ByVal
champCondition,
ByVal
valeurCondition,
ByVal
champCible,
ByVal



valeurNouvelle)


Using


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...)
0
Rejoignez-nous