Bonjour,
j'ai un souci un peu étrange et en même temps la cause doit être assez standard mais j'trouve pas. A noter que je ne suis pas spécialiste...
C'est une appli qui communique des consignes sur l'état d'avancement de réparations d'instruments de bord montés sur avions à un service appelé AOG-desk (AOG pour Aircraft On Ground, c'est à dire un avion bloqué au sol, avec généralement des passagers dedans, pour cause de non disponibilité d'un instruement de navigation par exemple). Tout ça pour préciser qu'un instrument est nommé RCN dans l'application.
Voilà l'affaire :
j'ai un formulaire basé sur une requête dénommée 'Consignes EL-ES'.
Cette requête fait concorder les données d'une table 'Consignes' et d'une table 'RCNs'.
Le but est d'ajouter une consigne dans la table 'Consignes'. Une fois fait, le formulaire est rafraichi. Entre temps, l'utilisateur sera passé par un autre formulaire qui lui demande quel RCN il compte ajouter dans la liste.
J'utilise le code suivant pour écrire dans la table 'Consignes' :
SQL = "insert into Consignes values('" & lstRCN & "','" & txtCommentaires & "','" & txtSemaine & "')"
DoCmd.RunSQL (SQL)
où lstRCN est la zone de liste avec le RCN. Jusque là tout va bien, l'enregistrement est créé.
Mais à la sortie de la procédure, une ligne (toujours la même) de la table a été modifiée au niveau du RCN : il est écrasé par le RCN choisi.
Donc j'ai donc 2 lignes avec le même RCN dont l'un possède les commentaires d'un RCN saisi précédement.
Bref, sans que je demande quoi que ce soit, on écrit dans ma table à l'insu de mon plein gré !
Pour essayer de bloquer l'accès à la table une fois que j'ai fini d'écrire dedans, j'ai essayé de la renommer via la commande 'Rename'. Et là j'obtiens le message d'erreur suivant :
Erreur d'exécution '3211' :
Le moteur de base de données n'a pas pu verrouiller la table 'Consignes'
car elle est déjà utilisée par une autre personne ou un autre processus.
Malgré mes recherches sur le net, je reste comme une andouille face à ce bug.
Avant de lancer le renommage, je ferme tous les formulaires et toutes les tables via VB si bien qu'il ne reste plus rien d'ouvert. Je précise aussi que je ferme les recordsets qui ont accédé à la table avant.
Je vous remercie déjà d'avoir lu jusque là et pour votre éventuelle aide.
Johann
Partager