Anomalie avec un Adodc1.Recordset.Update en VB6 [Résolu]

Signaler
Messages postés
62
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
3 avril 2008
-
Messages postés
1141
Date d'inscription
mercredi 7 mars 2007
Statut
Membre
Dernière intervention
19 septembre 2007
-
j'ai réalisé un petit programme en VB6 pour me connecter à une BDD Access via un controle ADODC.
La connection se fait lors du chargement d'une form avec le code suivant:


Private Sub Form_Load()
Adodc1.ConnectionString = "provider=microsoft.Jet.OLEDB.4.0;Data source=" & localisebase & ";jet OLEDB:Database password=" & mdpbase & ""
Adodc1.CommandType = adCmdText
Adodc1.RecordSource = "SELECT* FROM ADMIN ORDER BY nom,prenom"
Adodc1.Refresh
end sub


j'ai plusieurs Textbox sur ma form, reliés chacuns à differents champs de la BDD par le controle ADODC.....
je peux modifier le contenu des données(en modifiant le contenu des textboxs)et je met à jour la base par un simple évenement click d'un command button:


Private Sub Command2_Click()
Adodc1.Recordset.Update
Adodc1.Refresh
Unload me
end sub


jusque là tout se passe bien, mais si je veux faire un update avec un évenement form_unload par ex:


Private Sub Form_Unload(Cancel As Integer)
Adodc1.Recordset.Update
Adodc1.Refresh
End Sub


cela ne marche pas: les modifications ne sont pas enregistrées dans la BDD!
il semblerait d'ailleurs que l'update dans ce cas ne fonctionne qu'avec un commandbutton !!!!


y-a t-il une erreur de ma part dans les sequences de programation? ou est-ce une anomalie VB6??
quel est votre avis? comment faire pour effectuer mon update sur un Private Sub Form_Unload???


merci pour vos réponses.
A voir également:

5 réponses

Messages postés
1141
Date d'inscription
mercredi 7 mars 2007
Statut
Membre
Dernière intervention
19 septembre 2007
3
Au pire, rien ne t'empeche de faire cela manuellement.

dim conn as new adodb.connection
dim rst as new adodb.recordset

conn .CommandType = adCmdText
conn .open = "provider=microsoft.Jet.OLEDB.4.0;Data source=" & localisebase & ";jet OLEDB:Database password=" & mdpbase

rst.open= "SELECT* FROM ADMIN ORDER BY nom,prenom", conn, adOpenDynamic, adLockOptimistic

grace a rst , tu peux choisir un enregistrement (méthode movenext, moveprevious, movefirst, movelast) et la valeur d'un champ avec rst.fields("Nom_Du_Champ")

Si tu veux modifier, cette valeur par la valeur d'une textbox, ca donne :

rst.fields("Nom_Du_Champ") = textbox.value 

a la fin tu fais 

rst.update 'pour mettre a jour les données
 
et enfin cela pour finir

set conn = nothing
set rst= nothing
Messages postés
62
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
3 avril 2008

juste apporter 2 corrections:
1)supprimer les signes = apres les conn et rst.open avec

dim conn as new adodb.connection
dim rst as new adodb.recordset
conn .CommandType = adCmdText
conn .open "provider=microsoft.Jet.OLEDB.4.0;Data source=" & localisebase & ";jet OLEDB:Database password=" & mdpbase
rst.open "SELECT* FROM ADMIN ORDER BY nom,prenom", conn, adOpenDynamic, adLockOptimistic

2)rst.fields("Nom_Du_Champ") = textbox.text     ' et non pas textbox.value..........

de simples détails...mais la suggestion est bonne et ça marche!
Merci beaucoup+++
Messages postés
1141
Date d'inscription
mercredi 7 mars 2007
Statut
Membre
Dernière intervention
19 septembre 2007
3
Salut, il me semble avoir deja entendu un pb dans ce genre et les autres membres conseillaient de ne pas utiliser ce controle. Mais bon, cela marche pour toi sauf dans le unload donc on peut voir.

As tu essayé d'appeler la procédure Command2_Click dans le unload ?
Messages postés
62
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
3 avril 2008

j'ai essayé mais cela ne marche pas............l'update ne se realise pas.
Messages postés
1141
Date d'inscription
mercredi 7 mars 2007
Statut
Membre
Dernière intervention
19 septembre 2007
3
En effet, tu as raison, je sais pas ce qui m'a pris de mettre ces "=", n'importe quoi LOL.

Content que ca marche. Bonne continuation.