web-dev-qa-db-fra.com

Comment redémarrer le comptage à partir de 1 après avoir effacé la table dans MS Access?

J'ai une table dans MS Access qui a un type AutoNumber dans le champ ID

Après avoir inséré quelques lignes, le ID est devenu 200

Ensuite, j'ai supprimé les enregistrements du tableau. Cependant, lorsque j'ai essayé d'insérer une nouvelle ligne, je vois que ID commence par 201

Comment puis-je forcer le ID à redémarrer avec 1, sans avoir à laisser tomber la table et en faire une nouvelle?

16
Gold

Vous pouvez utiliser:

CurrentDb.Execute "ALTER TABLE yourTable ALTER COLUMN myID COUNTER(1,1)"

J'espère que vous n'avez pas de relations qui utilisent cette table, j'espère qu'elle est vide et j'espère que vous comprenez que tout ce que vous pouvez (principalement) compter sur un numéro automatique pour être est unique. Vous pouvez obtenir des écarts, des sauts, des nombres très grands ou même négatifs, selon les circonstances. Si votre numéro automatique signifie quelque chose, vous avez un problème majeur qui attend.

22
Fionnuala

Dans Access 2007 - 2010, accédez aux outils de base de données et cliquez sur Compacter et réparer la base de données, et il réinitialisera automatiquement l'ID.

33

En plus de toutes les préoccupations exprimées sur la raison pour laquelle vous donnez à un âne de rat quelle est la valeur ID (toutes sont correctes, vous ne devriez pas), permettez-moi d'ajouter ceci au mélange:

Si vous avez supprimé tous les enregistrements de la table, le compactage de la base de données réinitialise la valeur de départ à sa valeur d'origine.

Pour une table où il y a encore des enregistrements et où vous avez inséré dans le champ Numéro automatique une valeur inférieure à la valeur la plus élevée, vous devez utiliser la méthode de @ Remou pour réinitialiser la valeur de départ. Cela s'applique également si vous souhaitez réinitialiser au Max + 1 dans un tableau où les enregistrements ont été supprimés, par exemple, 300 enregistrements, dernier ID de 300, supprimer 201-300, compact ne réinitialise pas le compteur (vous devez utiliser @ Méthode de Remou - ce n'était pas le cas dans les versions antérieures de Jet, et, en effet, dans les premières versions de Jet 4, la première version de Jet qui permettait de manipuler la valeur de départ par programme).

2
David-W-Fenton

Je pense que les seules façons de le faire sont décrites dans cet article .

L'article explique plusieurs méthodes. Voici un exemple:

Pour ce faire, dans Microsoft Office Access 2007, procédez comme suit:

Supprimez le champ NuméroAuto de la table principale.

  1. Notez le nom du champ NuméroAuto.
  2. Cliquez sur l'onglet Créer, puis sur Conception de la requête dans le groupe Autre.
  3. Dans la boîte de dialogue Afficher la table, sélectionnez la table principale. Cliquez sur Ajouter, puis sur Fermer.
  4. Double-cliquez sur les champs requis dans la vue tableau de la table principale pour sélectionner les champs.
  5. Sélectionnez l'ordre de tri requis.
  6. Sous l'onglet Conception, cliquez sur Créer une table dans le groupe Type de requête. Tapez le nouveau nom de table dans la zone Nom de table, puis cliquez sur OK.
  7. Sous l'onglet Conception, cliquez sur Exécuter dans le groupe Résultats.
  8. Le message suivant apparaît:

    Vous êtes sur le point de coller # ligne (s) dans une nouvelle table.

    Cliquez sur Oui pour insérer les lignes.
  9. Fermez la requête.
  10. Cliquez avec le bouton droit sur la nouvelle table, puis cliquez sur Mode Création.
  11. Dans le mode Création de la table, ajoutez un champ NuméroAuto qui a le même nom de champ que vous avez supprimé à l'étape 1. Ajoutez ce champ NuméroAuto à la nouvelle table, puis enregistrez la table.
  12. Fermez la fenêtre du mode Création.
  13. Renommez le nom de la table principale. Renommez le nouveau nom de table en nom de table principale.
1
Vincent Ramdhanie