Base de données vérouillée

Fermé
Juliaz - 23 mai 2017 à 18:15
 Juliaz - 23 mai 2017 à 22:32
Bonjour,

Je suis confrontée depuis cette semaine à un problème sur lequel je viens demander votre aide.
J'ai en effet deux bases de données différents: base1 et base2.
la base1 a une table nommée Saisie et la base2 a une table nommée Lecture.
Les deux bases ne sont pas au même endroit.

Grâce à un bouton j'importe les données de la table Saisie de la Base1 vers la table Lecture de ma base2.
Le code a toujours marché et à ma grande surprise j'ai aujourd'hui une erreur d'exécution 3734 qui me dit ceci:
" la base de données a été placée par l'utilisateur<Admin> sur<nom du poste> dans un étant l'empêchant d'être ouverte ou verrouillée."

J'ai remarqué que quand je redémarre l'application, le code marche à nouveau.

Ci-dessous mon code:

Dim wksp As Workspace
 Dim db As Database
Set wksp = CreateWorkspace("", "admin", "")
Set db = wksp.OpenDatabase("\\dossier\Access\Base2.mdb")  ' chemin d'accès à la base2
db.Execute ("Delete * FROM [Lecture]")  ' supprime les données de la table Lecture se trouvant à la base 2
<gras>db.Execute ("INSERT INTO [Lecture] SELECT * FROM [MS Access;Database=" & CurrentProject.FullName & "].[Saisie]</gras><ital></ital> 'je remplie la table Lecture de la base 1 grâce à la table Saisie de la base1
db.close

MsgBox " les données ont été exportées"
End Sub


L'erreur se produit à la ligne de code en gras et italique. Je précise que j'ai mis CurrentProject.FullName car l'appli va être distribuée à d'autre utilisateurs et je souhaiterais qu'il s'adapte suivant le chemin de chacun.

Je viens solliciter vos lumières.
Merci d'avance

3 réponses

yg_be Messages postés 22696 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 avril 2024 1 471
23 mai 2017 à 20:05
bonsoir, si je comprends bien, tu fais ceci:
- ton code se trouve dans la base1
- ton code ouvre la base2 dans un workspace
- ton code ordonne à la base2 d'ouvrir une table dans la base1.
c'est bien cela?
As-tu essayé de faire plus simple, par exemple:
Dim SQL As String 
SQL = "INSERT INTO [MS Access;Database=\\dossier\Access\Base2.mdb].Lecture SELECT * FROM Saisie" 
DoCmd.RunSQL SQL
0
yg_be Messages postés 22696 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 avril 2024 1 471
23 mai 2017 à 20:14
ou bien:
Dim SQL As String 
SQL = "INSERT INTO Lecture IN "" [MS Access;Database=\\dossier\Access\Base2.mdb] 
 SELECT * FROM Saisie" 
DoCmd.RunSQL SQL
0
Merci yg_be,
çà marche très bien ce code raccourci.
Mais j'ai remarqué que l'exécution prenait plus de temps, serait-il dû à l'utilisation de DoCmd.RunSQL ?

Merci encore
0
yg_be Messages postés 22696 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 avril 2024 1 471
23 mai 2017 à 22:10
sorry, pas d'idée du pourquoi cela est plus lent.
parfois c'est mieux de faire plus simple, même si plus lent, :-)
0
T'as bien raison yg_be.
Je suis assez contente, je n'ai plus de message d'erreur .

Merci encore et très bonne soirée.
0