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

Le
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: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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Michel__D
Le #21354931
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"
Thierry.E
Le #21354921
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" 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"

Blaise Cacramp
Le #21356421
Bjr

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

Slt
"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: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



Publicité
Poster une réponse
Anonyme