2009-06-04 17 views
1

Nur neugierig, wenn ich Daten aus einer Tabelle mit 519 Zeilen in eine leere Tabelle importierte, warum begannen meine Auto-Nummer Schlüssel bei 56.557.618? Wie groß kann das werden? Ich möchte nicht, dass mir die Ziffern für mein Primärschlüsselfeld ausgehen, da ich noch nicht einmal mit dem Projekt begonnen habe und ich rechne damit, dass Tabellenkalkulationen ziemlich regelmäßig verteilt werden.MS Access AutoNumber beim Import

Antwort

1

Access merkt sich die zuletzt vergebene ID auch auf einer leeren Tabelle. So setzen Sie den Autowert Sie kompakt haben/reparieren die Datenbank nach der Tabelle Entleerung

Auch der Autowert ist eine lange ganze Zahl, die in Access ohne kompakt und Reparatur mit gehen bis zu 2,147,483,647

+0

Jeder leere Tisch? Dieser Tabellenkalkulations-Dump war das erste Mal, dass die Tabelle getroffen wurde. – NickSentowski

+0

Sie meinen, Sie fallen und erstellen die Tabelle jedes Mal? Oder verwenden Sie den Tisch erneut? –

+0

Das erste Mal, als ich den Tisch benutzte, war mein Schlüssel 56mil. Nachdem ich das gesehen habe, habe ich den Tisch getötet, neu erstellt, wieder abgeladen und ähnliche Ergebnisse erzielt. Wenn ich komprimiere und repariere, bekomme ich "gelöschte" Schlüssel zurück? – NickSentowski

3

Sie den Autowert zurücksetzen:

Sie müssen sicherstellen, dass die Tabelle leer ist, bevor Sie SQL ausführen, oder Sie erhalten Zugriff, wenn Sie versuchen, doppelte Autozahlen zu erstellen.

+0

Muss dies in VBA ausgeführt werden? Ich dachte ALTER TABLE wäre ein SQL-Befehl, aber es würde nicht für mich laufen. – NickSentowski

+0

Wie oben beschrieben, würde es in VBA ausgeführt, aber Sie können ALTER TABLE tblTable ALTER SPALTENKENNUNG COUNTER (1,1) in die SQL-Ansicht des Abfrageentwurfsfensters einfügen und es wird ausgeführt. Sie müssen Counter (1,1) nicht verwenden, es sei denn, Sie möchten von 1 neu starten, 100,1 wäre in Ordnung. – Fionnuala

0

Sie können die automatische Nummer auch zurücksetzen, indem Sie eine Append-Abfrage erstellen, die die Spalte autonumber enthält. Sobald eine Zeile angehängt ist, wird die Zahl auf den angehängten Wert + 1 gesetzt.

Dabei müssen Sie darauf achten, dass der Wert nicht kleiner als der höchste aktuelle Wert ist.

Für z.B.

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))); 

Würde die automatische Nummer auf + 2 der letzten Nummer zurücksetzen. Beachten Sie, dass Sie obligatorische Spalten hinzufügen und die neue Zeile anschließend löschen müssen.