ADODB mise à jour de la base

Résolu
tiopan Messages postés 9 Date d'inscription vendredi 5 novembre 2004 Statut Membre Dernière intervention 10 novembre 2004 - 5 nov. 2004 à 11:29
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 - 5 nov. 2004 à 15:24
via un formulaire VB6.0 je souhaite modifier la valeur de multiples champs dans une base de données access2000. Je parviens à renseigner les valeur à l'ouverture du form, mais si l'utilisateur modifie une valeur je n'arrive pas à l'enregistrer dans la base.

Voici mon code à la fermeture du formulaire :

Private Sub Save_Session_Click(Index As Integer)
Dim Ind As Integer
Dim frm As Form
Dim Ctrl As Control

For Ind = 0 To Forms.Count - 1
Set frm = Forms.Item(Ind)
If frm.Name = Me.Name Then Exit For
Next Ind

Set dbs = New ADODB.Connection
dbs.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\lcc_db.mdb;Persist Security Info=False"
Set rst = New ADODB.Recordset
rst.CursorLocation = adUseClient
rst.ActiveConnection = dbs
rst.Open "SELECT * FROM company", dbs, adOpenStatic, adLockBatchOptimistic
rst.Find "Session = " & ID_Session, , adSearchForward, 1
For Each Ctrl In frm.Controls
If Right(Ctrl.Name, 3) = "rst" Then
rst.Fields(Me.Controls(Ctrl.Name).Tag).Value = Me.Controls(Ctrl.Name).Text
End If
Next Ctrl
rst.Update
rst.Close
dbs.Close
Unload Me
End Sub

je fais poutant rst.update, mais aucun champs de la tables n'est mis à jour..

9 réponses

tiopan Messages postés 9 Date d'inscription vendredi 5 novembre 2004 Statut Membre Dernière intervention 10 novembre 2004
5 nov. 2004 à 15:08
Merci, j'ai enfin réussi à sauvegarder mes donnée en passant par ADO et avec le code suivant

For Each Ctrl In frm.Controls
If Right(Ctrl.Name, 3) = "rst" Then
If Ctrl.Name = "Cmb_fiscal_period_rst" Then
rst.Fields(Me.Controls(Ctrl.Name).Tag).Value = Me.Controls(Ctrl.Name).ItemData(Me.Controls(Ctrl.Name).ListIndex)
Else
rst.Fields(Me.Controls(Ctrl.Name).Tag).Value = Me.Controls(Ctrl.Name).Text
End If
rst.Update
End If
Next Ctrl
rst.UpdateBatch

Merci de votre aide.

Mais la diff entre ADO etDAO est réellement le choix de la personne où les fonctionnalité ???
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
5 nov. 2004 à 11:41
Salut,

Pourquoi tu n essaies pas de mettre a jour directement en utilisant une requete SQL :

UPDATE .... SET ... WHERE...

Tu mets ta requete SQL dans le .source d un recordset et tu a juste a ouvrir apres le recordset et normalement ca devrait fonctionner
@+
Julien
-----------------------------------------------------------
:big) Essai ca sinon on trouvera autre chose ;)
-----------------------------------------------------------
cboulas Messages postés 2641 Date d'inscription mercredi 2 juin 2004 Statut Membre Dernière intervention 8 janvier 2014 16
5 nov. 2004 à 11:46
Déjà tu peux alléger ton recordset en changeant :

rst.Open "SELECT * FROM company", dbs, adOpenStatic, adLockBatchOptimistic
rst.Find "Session = " & ID_Session, , adSearchForward, 1


par :
rst.Open "SELECT * FROM company Where Session = " & ID_Session", dbs, adOpenStatic, adLockBatchOptimistic


==================================
Sinon pour la mise à jour :

If Right(Ctrl.Name, 3) = "rst" Then
   with rst
      .edit
      !Me.Controls(Ctrl.Name).Tag=Me.Controls(Ctrl.Name).Text
      .update
   end with
End If


Chris...
Web : Firstruner - eMail : [mailto:support@firstruner.com Support]
tiopan Messages postés 9 Date d'inscription vendredi 5 novembre 2004 Statut Membre Dernière intervention 10 novembre 2004
5 nov. 2004 à 12:03
Julien :

Je me demande l'interet de passer par un adodb.connection alors que je pourrais passer par un recordset du style

dim dbs as database au lieu de adodb.connection
dim rst as recorset au lieu de ADODB.recordset

set dbs = "Provider.............mdb"
set rst = dbs.OpenRecordset("SELECT ........")
pour l'affichage dans mon formulaire

dbs.execute "UPDATE ........."
Pour sauvegarder dans ma base les modif.

Quels sont donc les avantage de ADODB.connection????

Chris :

merci pour le code, mais j'ai une erreur au niveau du .Edit
"Compile ERROR
Methode or data member not found"

la propriete edit n'existe pas pour mon recordset.
Comment faire ???

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
5 nov. 2004 à 12:11
Re,

Oui c est vrai que vu sous ce point de vue tu peux utiliser directement l objet connection et c est mieux.

Mais tu veux le faire en DAO ou en ADO.
@+
Julien
-----------------------------------------------------------
:big) Essai ca sinon on trouvera autre chose ;)
-----------------------------------------------------------
tiopan Messages postés 9 Date d'inscription vendredi 5 novembre 2004 Statut Membre Dernière intervention 10 novembre 2004
5 nov. 2004 à 13:05
Julien :

Je me demande l'interet de passer par un adodb.connection alors que je pourrais passer par un recordset du style

dim dbs as database au lieu de adodb.connection
dim rst as recorset au lieu de ADODB.recordset

set dbs = "Provider.............mdb"
set rst = dbs.OpenRecordset("SELECT ........")
pour l'affichage dans mon formulaire

dbs.execute "UPDATE ........."
Pour sauvegarder dans ma base les modif.

Quels sont donc les avantage de ADODB.connection????

Chris :

merci pour le code, mais j'ai une erreur au niveau du .Edit
"Compile ERROR
Methode or data member not found"

la propriete edit n'existe pas pour mon recordset.
Comment faire ???
tiopan Messages postés 9 Date d'inscription vendredi 5 novembre 2004 Statut Membre Dernière intervention 10 novembre 2004
5 nov. 2004 à 13:08
Mais tu veux le faire en DAO ou en ADO.

Peut importe c'est quoi le mieux??
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
5 nov. 2004 à 14:59
Re,

Ca depend des gens .

Par exemple moi j utilise ADO, mais il y a des gens qui preferent DAO.

As tu regler ton probleme ???
As tu essayer d utiliser la requete sur la connnection comme tu le proposais (qui peut aussi etre fait en ADO directment sur la connection)

@+
Julien
-----------------------------------------------------------
:big) Essai ca sinon on trouvera autre chose ;)
-----------------------------------------------------------
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
5 nov. 2004 à 15:24
ATTENTION C est juste mon avis

Basiquement ils offrent la meme choses, mais quant aux possibilites d evolutions, j opterai pour ADO car il est plus jeune et destine a remplacer DAO.

Attend je cherche un post qui avait deja ete pose et je t envoie le lien...

@+
Julien
-----------------------------------------------------------
:big) Essai ca sinon on trouvera autre chose ;)
-----------------------------------------------------------
Rejoignez-nous