2009-06-04 27 views
1

Juste curieux, lorsque j'ai importé des données d'une feuille de calcul avec 519 lignes dans une table vide, pourquoi mes clés de numérotation automatique ont-elles débuté à 56 557 618? Quelle taille peut-il avoir? Je ne veux pas finir par manquer de chiffres pour mon domaine clé primaire car je n'ai même pas commencé le projet et je m'attends à faire des feuilles de calcul régulièrement.MS Access AutoNumber à l'importation

Répondre

1

L'accès se souvient du dernier identifiant qu'il a donné même sur une table vide. Pour réinitialiser le autonumber vous devez compact/réparer la base de données après avoir vidé la table

De plus, le autonumber est un entier long qui dans Access peut aller jusqu'à 2147483647

+0

Une table vide? Ce vidage de feuille de calcul était la première fois que la table était touchée. – NickSentowski

+0

Vous voulez dire que vous laissez tomber et créez la table à chaque fois? ou réutilisez-vous la table? –

+0

La première fois que j'ai utilisé la table, ma clé était 56mil. Après avoir vu cela, j'ai tué la table, l'ai recréée, jetée à nouveau, et j'ai obtenu des résultats similaires. Quand je compacte et répare, vais-je récupérer les clés "effacées"? – NickSentowski

3

Vous pouvez réinitialiser le autonumber sans compact et réparation à l'aide:

CurrentDb.Execute "ALTER TABLE tblTable ALTER COLUMN ID COUNTER(1,1)" 

vous devez vous assurer que la table est vide avant d'exécuter le SQL ou vous aurez accès à essayer de créer en double AutoNumbers.

+0

Est-ce que cela doit être exécuté dans VBA? Je pensais que ALTER TABLE était une commande SQL, mais elle ne fonctionnerait pas pour moi. – NickSentowski

+0

Comme il est écrit ci-dessus, il fonctionnera dans VBA, mais vous pouvez coller ALTER TABLE tblTable ALTER COLUMN ID COUNTER (1,1) dans la vue SQL de la fenêtre de conception de la requête et il sera exécuté. Vous ne devez pas utiliser Counter (1,1) sauf si vous souhaitez redémarrer à partir de 1, 100,1 serait bien. – Fionnuala

0

Vous pouvez également réinitialiser le numéro automatique en créant une requête Ajout qui inclut la colonne NuméroAuto. Une fois qu'une ligne est ajoutée, le numéro est défini sur la valeur + 1 ajoutée.

Cela étant, vous devez faire attention à ce que la valeur ne soit pas inférieure à la valeur actuelle la plus élevée.

Par exemple.

INSERT INTO tblName (id) 
SELECT [tblName]![id]+1 AS [New Value] 
FROM tblName 
GROUP BY [tblName]![id]+1, tblName.id 
HAVING (((tblName.id)=(Select max(id) from tblName))); 

Permet de réinitialiser le numéro automatique sur + 2 du dernier numéro. Notez que vous devez inclure toutes les colonnes obligatoires et supprimer la nouvelle ligne par la suite.