Modifications dans base de données ne s'enregistrent pas

Résolu
pjouy Messages postés 110 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 18 mai 2009 - 28 mars 2005 à 12:23
pjouy Messages postés 110 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 18 mai 2009 - 29 mars 2005 à 01:03
Bonjour,

J'ai fait le code ci-dessous, tout se passe bien sauf qu'il n'enregistre rien dans la base de données Access. C'est déroutant et je n'arrive pas à savoir pourquoi, et encore moins à trouver de solution... La lecture des données, elle, se fait sans problème.

Voici mon code :
----

ConnectionBase.Provider = "Microsoft.jet.OLEDB.4.0"
ConnectionBase.ConnectionString = App.Path & "\Stats.mdb"
ConnectionBase.Open
'Ouverture de la requête SQL dans le recordset
Table.Open "Select * from Stats", ConnectionBase, adOpenStatic, adLockOptimistic

'Attribution du champ à l'objet
Set Label_NbCheck1.DataSource = Table
Label_NbCheck1.DataField = "Check1" 'Check1 est un champ dans ma table Access

Label_NbCheck1.Caption = Val(Label_NbCheck1.Caption) + 1

Table.Update
Table.Close
ConnectionBase.Close

----

8 réponses

jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
29 mars 2005 à 00:25
OK mais comme cela m'intéresse, j'ai modifié le code de façon à pouvoir l'utiliser sur une de mes bases Access.
Cela à l'air de fonctionner, le champ de ma base s'incrémente de 1 à chaque click du bouton de commande.

Private Sub Command1_Click()
Dim ConnectionBase As ADODB.Connection
Dim Table As ADODB.Recordset
Set ConnectionBase = New ADODB.Connection
Set Table = New ADODB.Recordset
ConnectionBase.Provider = "Microsoft.jet.OLEDB.4.0"
ConnectionBase.ConnectionString = App.Path & "\Contacts.mdb"
ConnectionBase.Open
'Ouverture de la requête SQL dans le recordset
Table.Open "Select * from Contacts", ConnectionBase, adOpenStatic, adLockOptimistic


'Attribution du champ à l'objet
Set Label_NbCheck1.DataSource = Table
Label_NbCheck1.DataField = "Nom" 'Check1 est un champ dans ma table Access
Table.Fields!Nom = Val(Label_NbCheck1.Caption) + 1

Table.Update
Table.Close
ConnectionBase.Close


End Sub
3
jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
28 mars 2005 à 12:47
Table.AddNew
ton code,ensuite
Table.Update

jpleroisse
0
pjouy Messages postés 110 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 18 mai 2009
28 mars 2005 à 19:26
J'ai oublié de préciser : il n'y a que 2 lignes dans ma table, qui contiennent des valeurs que j'incrémente. Je ne crée aucune ligne supplémentaire. Donc, pas besoin d'un AddNew, merci quand même pour ta réponse.
Si quelqu'un a une autre idée...
0
jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
28 mars 2005 à 19:58
Essaie Table.Edit
0

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

Posez votre question
pjouy Messages postés 110 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 18 mai 2009
28 mars 2005 à 20:46
Je n'ai pas l'option Table.Edit, je n'ai que Table.EditMode, mais ça attend qq chose ensuite...

C'est vraiment curieux, s'il faut c'est une ligne idiote que j'ai oubliée mais je ne vois vraiment pas laquelle... HELP !!!
0
jpleroisse Messages postés 1788 Date d'inscription mardi 7 novembre 2000 Statut Membre Dernière intervention 11 mars 2006 27
28 mars 2005 à 21:31
Essaie
Static vMyBookMark as Variant (au début de ta procédure)

With Table.RecordSet
If (.EditMode = dbEditNone) Then
vMyBookMark = .BookMark
.Edit
End If
End With
0
pjouy Messages postés 110 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 18 mai 2009
28 mars 2005 à 23:46
Il y a une erreur à Table.Recordset
Une précision supplémentaire si ça peut vous aider : je travaille sous VB6.
Votre code me paraît un peu compliqué pour pouvoir enregistrer un changement dans un champ...
0
pjouy Messages postés 110 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 18 mai 2009
29 mars 2005 à 01:03
Merci !

Ta réponse a l'air de fonctionner...Ah le début de la programmation en code, c'est moins facile qu'avec l'objet ADO !
Pour info, je viens de trouver une autre solution : faire un Table.MoveLast . Ca met bien ma ligne à jour. Ma table ne comportant que 2 lignes, cela ne prend pas de ressources en plus... ;)

Merci pour ton aide !
0