Bonjour à tous.
Voici un truc étrange qui m'est arrivé avec le code ci-dessous qui est un MAJ/Ajout en lieu et place d'une requête d'ajout et d'une requête de modification.
Un MaxLocksPerFile est apparu en plein milieu de mon traitement.
Ce code ne comporte aucune extravagance et n'est pas utilisé dans une transaction.
Et je fais mes test seul sur mon PC en local, donc pas de blocage multi-utilisateur.
Il a fallu que j'ajoute un DoEventsaprès le Update car sinon, en gros à la moitié du traitement Access afficher que j'avais atteint le MaxLocksPerFile que je devais changer cette variables.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 Dim db As DAO.Database: Set db = CurrentDb Dim rDonnees As DAO.Recordset: Set rDonnees = db.OpenRecordset("reqBottin_Remplir", dbOpenSnapshot) Dim rBottin As DAO.Recordset: Set rBottin = db.OpenRecordset("tblBottin_Base", dbOpenDynaset) Dim f As DAO.Field Do While Not rDonnees.EOF iProgression = mdlProgression.GererProgression(prmFrmProgression, iProgression, 1) 'Affiche la barre de progression. Call rBottin.FindFirst("[NoMatricule]=" & rDonnees![NoMatricule]) If Not rBottin.NoMatch Then rBottin.Edit Else rBottin.AddNew End If For Each f In rDonnees.Fields rBottin.Fields(f.Name) = f Next f rBottin.Update: DoEvents 'Le DoEvents force Access à libérer l'enregistrement rDonnees.MoveNext Loop rBottin.Close: Set rBottin = Nothing rDonnees.Close: Set rDonnees = Nothing db.Close: Set db = Nothing
C'est d'autant plus étonnant que mon sous-programme d'affichage de barre de progression comporte lui aussi un DoEventsqu'il est appelé à chaque enregistrement.
En espérant avoir aider à préserver quelques cheveux :-).
P.S. Et encore plus étrange, j'ai refait un test en enlevant le DoEvents et je n'ai plus de message d'erreur.
A+
Partager