Bonjour,
Access 2010 à 2016 (32 et 64 bits). J'ai déjà posé un post pour trouver pourquoi les tables perdent des index (pas trouvé de solution). Mais j'ai l'impression que le problème peut aussi venir de la perte des relations entre tables, soit je perds d’abord des relations et ensuite un index soit je perds un index suivi de la perte de plusieurs relations. J'ai une frontale (qui contient du VBA) et une dorsale qui contient les tables. Tout est sur le réseau. L'application est multipostes (entre 2 et 10 utilisateurs). Le problème est difficile à mettre en évidence, chez certains utilisateurs aucun soucis, chez d'autres pertes tous les 2 à 3 mois. En général le problème survient sur les sites ou il y a plus des 4 ou 5 utilisateurs.
Pour repérer les pertes de relations, j'ai créé un petit programme qui compte les relations entre tables (nombre d’enregistrements dans la table : MSysRelationships). Et si il y une perte de relation, je sais que je dois récupérer la base et replacer les relations et parfois l'index de la table principale à disparu (historique, mais parfois dans une autre table principale, liste des pièces) et j'ai des doublons et des enregistrements isolés dans les tables liées ...
Nota : la table Historique est indexée sur un numéro (champ NUMERO AUTO).

Impossible de trouver une explication, coupure réseau peut-être ? Conflit lors de la création ou lors de la modification d'un enregistrement ?
Pour éviter des conflits lors de la modification d'un enregistrement en multi-utilisateurs j'exploite une méthode peut-être peu orthodoxe.
J'essaie d'abord d’écrire dans la table en modifiant un champ (réécrire les données sans rien changer) si j'ai un message d'erreur (qui signifie que l’enregistrement est occupé), je donne la main à la procédure d’erreur qui fait sortir et je refuse la possibilité d’écrire (en fait je ne laisse pas Access gérer les conflits d'accès tout seul).
Peut-être que le problème vient de cette méthode ??

Sinon peut-être lors de la création d'un nouvel enregistrement Access gère peut-être mal les Numéro Auto, là je laisse Access ajouter seul un enregistrement ?

j'ajoute une copie d'écran des relations de la table principale (historique), celle qui est la plus utilisée (entre 3000 et 10 000 enregistrements),

En général les utilisateurs font des compactages réguliers, mais pas toujours !!!

Merci pour votre aide.
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
 
' test d'écriture
On Error GoTo fin_erreur
    Me.AllowEdits = True
    Me.[TEXTE] = Me.[TEXTE]
    Me.AllowEdits = False
GoTo fin_verrou
fin_erreur:
 
  Création d’un enregistrement
Set db = CurrentDb
 Set Rs = db.OpenRecordset("HISTORIQUE", dbOpenDynaset)
         With Rs
        .AddNew
        ![MATERIEL] = xxxvar1
         ![CREATION] = DATE
         ![HEURE CREATION] = TIME
         xxnumerobt = Rs![NUMERO]
         .Update
          End With
         Rs.Close
Nom : RELATIONS.jpg
Affichages : 260
Taille : 96,1 Ko