Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problème d'écriture de données base de données partagée.

3 réponses
Avatar
Thierry.E
Bonjour,

J'ai un problème d'écriture dans une base de donnée lorsque celle-ci est
utilisée via un réseau par l'intermédiaire d'un code excel VBA. Nota Bene :
La base de donnée est dans un répertoire partagé sur mon ordinateur.

J'ai les deux codes ci-dessous dans Excel VBA pour aller ajouter un
enregistrement dans une base de donnée Access. Le premier pour ouvrir la
connexion, le second pour écrire l'enregistrement.

Lorsque je veux faire une écriture j'ai le message d'erreur suivant : "Mise
à jour impossible. La base de donnée ou l'objet est en lecture seule."
Par contre, lorsque je travaille en local sur mon PC (Chemin =
"C:\OdbcScid\OdbcScidData.mde"), ça fonctionne bien et je réussis à écrire
les enregistrements sans problème !!
J'en conclus qu'il y a un problème de droits ou autre dans les paramètres de
partage du répertoire, mais je n'arrive pas à voir... Help !

A noter que pour les tests aucune personne ne se connectait à la base de
donnée qui aurait pu interférer.


[Codes]
--------------------
'Définit le nom de la connexion
Public Conn As ADODB.Connection
'Définit le nom de la requête
Public Rst3 As ADODB.Recordset

Sub OuvrirConnexionVersBaseDeDonnées()
'Procédure de connexion à la BDD

Chemin = "\\Pc_scid13\OdbcScid_SurTE\OdbcScidData.mde"

Set Conn = New ADODB.Connection
With Conn
' Définition du fournisseur OleDB pour la connexion
.Provider = "Microsoft.JET.OLEDB.4.0"
' Ouverture d'une connexion vers art_st2e.mdb
.Open Chemin
End With
End Sub

---------------------
Sub ecritAR()

' Ouverture de la table. Pour pouvoir ajouter des enregistrements dans la
table,
'l'argument Locktype de la méthode Open doit être défini à adLockOptimistic
Set Rst = New ADODB.Recordset
Rst.Open "AchatsAR", Conn, adOpenDynamic, adLockOptimistic
On Error Resume Next
With Rst
'Ajout d 'un nouvel enregistrement
.AddNew
' Ajout des informations dans les champs appropriés
.Fields("CodeFournisseurCde").Value = "toto"
.Fields("QteCdeAchatCde").Value = 100
' Écriture du nouvel enregistrement dans la base de données
.Update
End With

Rst.Close

3 réponses

Avatar
Michel__D
Bonjour,

Thierry.E a écrit :
Bonjour,

J'ai un problème d'écriture dans une base de donnée lorsque celle-ci est
utilisée via un réseau par l'intermédiaire d'un code excel VBA. Nota Bene :
La base de donnée est dans un répertoire partagé sur mon ordinateur.

J'ai les deux codes ci-dessous dans Excel VBA pour aller ajouter un
enregistrement dans une base de donnée Access. Le premier pour ouvrir la
connexion, le second pour écrire l'enregistrement.

Lorsque je veux faire une écriture j'ai le message d'erreur suivant : "Mise
à jour impossible. La base de donnée ou l'objet est en lecture seule."
Par contre, lorsque je travaille en local sur mon PC (Chemin =
"C:OdbcScidOdbcScidData.mde"), ça fonctionne bien et je réussis à écrire
les enregistrements sans problème !!
J'en conclus qu'il y a un problème de droits ou autre dans les paramètres de
partage du répertoire, mais je n'arrive pas à voir... Help !

A noter que pour les tests aucune personne ne se connectait à la base de
donnée qui aurait pu interférer.


[Codes]
--------------------
'Définit le nom de la connexion
Public Conn As ADODB.Connection
'Définit le nom de la requête
Public Rst3 As ADODB.Recordset

Sub OuvrirConnexionVersBaseDeDonnées()
'Procédure de connexion à la BDD

Chemin = "Pc_scid13OdbcScid_SurTEOdbcScidData.mde"

Set Conn = New ADODB.Connection
With Conn
' Définition du fournisseur OleDB pour la connexion
.Provider = "Microsoft.JET.OLEDB.4.0"
' Ouverture d'une connexion vers art_st2e.mdb
.Open Chemin
End With
End Sub

---------------------
Sub ecritAR()

' Ouverture de la table. Pour pouvoir ajouter des enregistrements dans la
table,
'l'argument Locktype de la méthode Open doit être défini à adLockOptimistic
Set Rst = New ADODB.Recordset
Rst.Open "AchatsAR", Conn, adOpenDynamic, adLockOptimistic
On Error Resume Next
With Rst
'Ajout d 'un nouvel enregistrement
.AddNew
' Ajout des informations dans les champs appropriés
.Fields("CodeFournisseurCde").Value = "toto"
.Fields("QteCdeAchatCde").Value = 100
' Écriture du nouvel enregistrement dans la base de données
.Update
End With

Rst.Close



Quels droits de partage as-tu sur ton répertoire ?

PS: Clic droit sur le répertoire puis onglet "Partage"
Avatar
Thierry.E
Bonjour Michel,

Merci pour ta réponse. La résolution des problèmes passe bien souvent par la
simplicité. Et la honte bien souvent par moi :o)
En effet, dans les propriétés avancées du partage, seule la lecture était
cochée... j'étais tellement persuadé d'avoir correctement configuré le
partage que je n'ai même pas vérifié.

Désolé pour le dérangement et merci encore,
Thierry

"Michel__D" a écrit dans le message de
news:
Bonjour,

Thierry.E a écrit :
Bonjour,

J'ai un problème d'écriture dans une base de donnée lorsque celle-ci est
utilisée via un réseau par l'intermédiaire d'un code excel VBA. Nota Bene
: La base de donnée est dans un répertoire partagé sur mon ordinateur.

J'ai les deux codes ci-dessous dans Excel VBA pour aller ajouter un
enregistrement dans une base de donnée Access. Le premier pour ouvrir la
connexion, le second pour écrire l'enregistrement.

Lorsque je veux faire une écriture j'ai le message d'erreur suivant :
"Mise à jour impossible. La base de donnée ou l'objet est en lecture
seule."
Par contre, lorsque je travaille en local sur mon PC (Chemin =
"C:OdbcScidOdbcScidData.mde"), ça fonctionne bien et je réussis à
écrire les enregistrements sans problème !!
J'en conclus qu'il y a un problème de droits ou autre dans les paramètres
de partage du répertoire, mais je n'arrive pas à voir... Help !

A noter que pour les tests aucune personne ne se connectait à la base de
donnée qui aurait pu interférer.


[Codes]
--------------------
'Définit le nom de la connexion
Public Conn As ADODB.Connection
'Définit le nom de la requête
Public Rst3 As ADODB.Recordset

Sub OuvrirConnexionVersBaseDeDonnées()
'Procédure de connexion à la BDD

Chemin = "Pc_scid13OdbcScid_SurTEOdbcScidData.mde"

Set Conn = New ADODB.Connection
With Conn
' Définition du fournisseur OleDB pour la connexion
.Provider = "Microsoft.JET.OLEDB.4.0"
' Ouverture d'une connexion vers art_st2e.mdb
.Open Chemin
End With
End Sub

---------------------
Sub ecritAR()

' Ouverture de la table. Pour pouvoir ajouter des enregistrements dans la
table,
'l'argument Locktype de la méthode Open doit être défini à
adLockOptimistic
Set Rst = New ADODB.Recordset
Rst.Open "AchatsAR", Conn, adOpenDynamic, adLockOptimistic
On Error Resume Next
With Rst
'Ajout d 'un nouvel enregistrement
.AddNew
' Ajout des informations dans les champs appropriés
.Fields("CodeFournisseurCde").Value = "toto"
.Fields("QteCdeAchatCde").Value = 100
' Écriture du nouvel enregistrement dans la base de données
.Update
End With

Rst.Close



Quels droits de partage as-tu sur ton répertoire ?

PS: Clic droit sur le répertoire puis onglet "Partage"

Avatar
Blaise Cacramp
Bjr

Ne pas "attaquer" la base directement mais via le menu données, données
externes, créer une requète.

Slt
"Thierry.E" a écrit dans le message de news:
%
Bonjour,

J'ai un problème d'écriture dans une base de donnée lorsque celle-ci est
utilisée via un réseau par l'intermédiaire d'un code excel VBA. Nota Bene
: La base de donnée est dans un répertoire partagé sur mon ordinateur.

J'ai les deux codes ci-dessous dans Excel VBA pour aller ajouter un
enregistrement dans une base de donnée Access. Le premier pour ouvrir la
connexion, le second pour écrire l'enregistrement.

Lorsque je veux faire une écriture j'ai le message d'erreur suivant :
"Mise à jour impossible. La base de donnée ou l'objet est en lecture
seule."
Par contre, lorsque je travaille en local sur mon PC (Chemin =
"C:OdbcScidOdbcScidData.mde"), ça fonctionne bien et je réussis à écrire
les enregistrements sans problème !!
J'en conclus qu'il y a un problème de droits ou autre dans les paramètres
de partage du répertoire, mais je n'arrive pas à voir... Help !

A noter que pour les tests aucune personne ne se connectait à la base de
donnée qui aurait pu interférer.


[Codes]
--------------------
'Définit le nom de la connexion
Public Conn As ADODB.Connection
'Définit le nom de la requête
Public Rst3 As ADODB.Recordset

Sub OuvrirConnexionVersBaseDeDonnées()
'Procédure de connexion à la BDD

Chemin = "Pc_scid13OdbcScid_SurTEOdbcScidData.mde"

Set Conn = New ADODB.Connection
With Conn
' Définition du fournisseur OleDB pour la connexion
.Provider = "Microsoft.JET.OLEDB.4.0"
' Ouverture d'une connexion vers art_st2e.mdb
.Open Chemin
End With
End Sub

---------------------
Sub ecritAR()

' Ouverture de la table. Pour pouvoir ajouter des enregistrements dans la
table,
'l'argument Locktype de la méthode Open doit être défini à
adLockOptimistic
Set Rst = New ADODB.Recordset
Rst.Open "AchatsAR", Conn, adOpenDynamic, adLockOptimistic
On Error Resume Next
With Rst
'Ajout d 'un nouvel enregistrement
.AddNew
' Ajout des informations dans les champs appropriés
.Fields("CodeFournisseurCde").Value = "toto"
.Fields("QteCdeAchatCde").Value = 100
' Écriture du nouvel enregistrement dans la base de données
.Update
End With

Rst.Close