2010-12-11 3 views
10

J'ai table MS Access qui a un type AutoNumber dans le champ IDComment redémarrer compter à partir de 1 après avoir effacé la table dans MS Access?

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

Puis, je l'ai supprimé les enregistrements de la table. Cependant, quand j'ai essayé d'insérer une nouvelle ligne, je vois que le ID commence par 201

Comment puis-je forcer le ID à redémarrer avec 1, sans avoir à déposer la table et faire de nouveaux un nouveau?

+3

Tout ce que vous essayez d'accomplir en faisant ceci (aucune idée de pourquoi quelqu'un se soucierait de quoi et le numéro d'identification est aussi long que c'est unique et vous ne les manquez pas.), Je chercherais un meilleur Solution. – JeffO

Répondre

19

Vous pouvez utiliser:

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

J'espère que vous avez pas de relations qui utilisent ce tableau, je l'espère, il est vide, et j'espère que vous comprenez que tout ce que vous pouvez (la plupart du temps) reposent sur une autonumber être est unique. Vous pouvez obtenir des lacunes, des sauts, des nombres très grands ou même négatifs, selon les circonstances. Si votre numéro de téléphone signifie quelque chose, vous avez un problème majeur qui attend de se produire.

+2

Cela semble très bien, dommage qu'il échoue s'il y a une relation en utilisant cette colonne 'myID' ... –

+2

@AlexisWilke D'où mon commentaire ci-dessus" J'espère que vous n'avez pas de relations qui utilisent cette table ". Vous ne devriez vraiment pas vous préoccuper des autonumbers, sinon qu'ils fournissent une référence unique. – Fionnuala

+0

Ouais, un de mes clients utilise le numéro d'auto comme numéro de commande et après une petite bizarrerie, ils ont une lacune ... Impossible de réparer, cependant, ils ont des relations! Dans mon propre codage, j'utilise les numéros automatiques pour les relations (unicité), mais pas pour les nombres qui sont affichés à l'utilisateur final. –

1

Je pense que les seuls moyens de le faire sont décrits dans this article.

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

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

Supprimer 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 Création d'une 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 tabulaire de la table principale pour sélectionner les champs.
  5. Sélectionnez l'ordre de tri requis.
  6. Dans l'onglet Conception, cliquez sur Créer une table dans le groupe Type de requête. Tapez le nouveau nom de la table dans la zone Nom de la table, puis cliquez sur OK.
  7. Dans l'onglet Conception, cliquez sur Exécuter dans le groupe Résultats.
  8. Le message suivant s'affiche:

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

    Cliquez sur Oui pour insérer les lignes.
  9. Fermer la requête.
  10. Cliquez avec le bouton droit sur la nouvelle table, puis cliquez sur Mode Création.
  11. En 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 de conception.
  13. Renommez le nom de la table principale. Renommez le nouveau nom de la table au nom de la table principale.
2

En plus de toutes les préoccupations exprimées au sujet de la raison pour laquelle vous donnez un cul de rat ce que la valeur d'identification est (tous sont corrects que vous ne devriez pas), laissez-moi ajouter ceci au mélange:

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

Pour une table où il existe encore des enregistrements et si vous avez inséré une valeur dans le champ Autonumber inférieure à la valeur la plus élevée, vous devez utiliser la méthode @ Remou pour réinitialiser la valeur de départ. Ceci s'applique également si vous voulez réinitialiser au Max + 1 dans une table où les enregistrements ont été supprimés, par exemple, 300 enregistrements, dernier ID de 300, supprimer 201-300, compact ne réinitialisera pas le compteur (vous devez utiliser @ La 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 programmation).

26

Dans Access 2007 - 2010, accédez à Outils de base de données, puis cliquez sur Compacter et réparer la base de données pour réinitialiser automatiquement l'ID.

+0

En fait, je suis d'accord avec cette solution - un simple C + R réinitialisera le numéro automatique. –

+0

Fonctionne également dans Access 2013. Cela semble définitivement être la méthode la plus simple et la plus infaillible et cela fonctionne avec beaucoup de relations. Je sais aussi que l'ID n'a pas vraiment d'importance mais après un test de bogue mon script d'importation c'est sympa, quoique très anale, de pouvoir recommencer à partir de 1. : P – marcusdoesstuff

+0

m'a sauvé! Simple et ça marche. Résout lorsque vous avez supprimé des lignes et que votre numéro d'utilisateur forme des espaces vides. – Bradman175

Questions connexes