Wie setze ich den ersten Wert von AutoNumber in Access?

9

Ich muss den AutoNumber-Wert nicht wie in dieser Frage zurücksetzen , sondern möchte zuerst die Nummer auf Folgendes setzen:

1001

Was dann wie gewohnt inkrementiert:

1001

1002

1003

...

Wie gehe ich in Access 2010 vor?

James Mertz
quelle
5
Keine Antwort, sondern eine Warnung: Autonumber ist nicht dafür ausgelegt, auf diese Weise verwaltet zu werden. Ich habe unzählige Leute gesehen, die es versucht haben. Es funktioniert nie, weil die Datenbank manchmal seltsame Dinge inkrementiert (fehlgeschlagene Schreibvorgänge erhöhen beispielsweise immer noch die Anzahl). Autonumber garantiert nicht , dass die Datensatznummern fortlaufend sind. In seltenen Fällen wird nicht einmal garantiert, dass die Nummer eindeutig ist. Dies ist sehr nützlich, um einen Primärschlüssel für eine kleine Tabelle zu erstellen. Es ist ein wenig riskant für große Tische. Es ist absolut schrecklich, es als tatsächliches Datenfeld zu verwenden. He
Bacon Bits
@ BaconBits ... wofür soll AutoNumber dann verwendet werden?
James Mertz
Rest des Kommentars von @ BaconBits: Wenn Sie Artikel wie diesen sehen, wenn etwas birnenförmig wird, weil die Leute erwarten, dass Autonumber etwas ist, was es nicht ist. Wenn Sie auf diese Weise Zahlen generieren müssen, schreiben Sie die Abfragen und dergleichen in die Datenbank, um dies selbst richtig zu tun.
Stapelüberlauf ist

Antworten:

16

Obwohl Access diese Funktion nicht nativ bietet, kann sie durch eine Abfrage wie die folgende erreicht werden:

CREATE TABLE TableThatIncrements
(
Id AUTOINCREMENT(1001,1)
)

Dadurch wird eine einzelne Tabelle mit dem Namen "TableThatIncrements" mit einer einzelnen Spalte mit dem Namen "Id" erstellt. Sie können jetzt den Tabelleneditor verwenden, um Eigenschaften und / oder andere Spalten hinzuzufügen.

Veränderung

AUTOINCREMENT(x,y)

Wo xist die anfängliche Inkrementnummer und ydie Nummer, mit der inkrementiert werden soll? So AUTOINCREMENT(100,5)ergibt sich: 100, 105, 110, 115 usw.

Wenn Sie eine vorhandene Tabelle ändern möchten, verwenden Sie die folgende Abfrage. Stellen Sie sicher, dass die Registerkarte einer bestimmten Tabelle geschlossen ist, damit Access sie sperren und ändern kann.

ALTER TABLE TableThatIncrements
   ALTER COLUMN Id AUTOINCREMENT(1001,1)

Sie können eine Abfrage in Access ausführen, indem Sie folgende Schritte ausführen:

  1. Gehen Sie zur Registerkarte "Erstellen" und klicken Sie auf "Abfragedesign".
    Geben Sie hier die Bildbeschreibung ein

  2. Schließen Sie einfach das angezeigte Fenster, in dem Sie aufgefordert werden, Tabellen auszuwählen. Das brauchen wir nicht.

  3. Gehen Sie zur Registerkarte "Design" und klicken Sie auf die Schaltfläche mit dem Pfeil, bis Sie einen Texteingabebildschirm erhalten. (Standardmäßig heißt es SELECT;).
    Geben Sie hier die Bildbeschreibung ein

  4. Löschen Sie den Standardtext und fügen Sie die obige Abfrage ein.

  5. Klicken Sie auf "Ausführen".
    Geben Sie hier die Bildbeschreibung ein

Stapelüberlauf ist tot
quelle
Gute Antwort, aber das schafft eine neue Tabelle ... oder irre ich mich? Kann dies in einer bereits erstellten Tabelle erfolgen?
James Mertz
@KronoS Aktualisiert meine Antwort
ist tot
2

1- Tabelle erstellen1 2- Zum Erstellen -------> Entwurfsabfrage gehen. 3- Schließen Sie Tabelle 4- Gehen Sie von oben zu SQl. 5- Über diesen Code hinaus.

ALTER TABLE [TABLE1] ALTER COLUMN [Id] COUNTER (8982,1)

Muhammad
quelle
Dies scheint mit der akzeptierten Antwort identisch zu sein, außer dass ein anderes Schlüsselwort verwendet wird (und das andere ist viel besser formatiert). Ist deine Antwort wirklich anders? Können Sie erklären, wie? Ist deine Antwort besser? Warum? Bitte antworten Sie nicht in Kommentaren; Bearbeiten Sie Ihre Antwort, um sie klarer und vollständiger zu gestalten.
Scott
@Scott Eigentlich sind sie etwas anders: ALTER COLUMN Id AUTOINCREMENT (1001,1) und ALTER COLUMN [Id] COUNTER (8982,1) sehen das Wort AUTOINCREMENT und COUNTER, aber beide funktionieren wie erwartet
willy wonka
1
@willyw: Richtig; Ich sagte "das gleiche ... bis auf die Verwendung eines anderen Schlüsselworts ".
Scott
@Scott ops ja du hast recht ... ich habe zu schnell gelesen sorry ;-)
willy wonka
1

Diese Website bietet eine sehr einfache Möglichkeit, Ihre automatische Nummerierung mit einer beliebigen Nummer zu starten: http://www.fmsinc.com/microsoftaccess/AutoNumber%20Field/Creating.asp

Sie erstellen eine Abfrage mit einem Ausdruck, der das Feld für die automatische Nummerierung anweist, sich zu ändern

"Führen Sie zuerst diese Abfrage aus:

INSERT INTO tblName (ID) SELECT 999 AS Expr1

Dabei ist tblName der Tabellenname und ID der Name des Felds AutoNumber.

Führen Sie dann eine zweite Abfrage aus, um die eingefügte Zeile zu löschen:

DELETE FROM tblName WHERE ID = 999;

(Alternativ können Sie einfach die Tabelle öffnen und die eingefügte Zeile manuell löschen.)

Dem nächsten der Tabelle hinzugefügten Datensatz wird nun der Wert 1000 zugewiesen.

Diese Methode funktioniert mit einer neuen Tabelle oder mit einer Tabelle, deren AutoNumber den Seed-Wert noch nicht erreicht hat. (Natürlich wird das ID-Feld für vorhandene Zeilen nicht geändert, aber nachfolgende Zeilen beginnen mit 1000.) "

George
quelle
0

Sie müssen Access austricksen, da davon ausgegangen wird, dass Sie nicht an einer anderen Autonummer als der bereitgestellten interessiert sind.

Sie müssen die Tabelle mit der benutzerdefinierten automatischen Nummerierung beginnen, für die einige Einstellungen erforderlich sind. Aber sobald es losgeht, können Sie von dort aus einfach weiter hinzufügen.

Google "Access Change Autonumber Start" und Sie finden verschiedene Optionen, um dies zu tun. Die meisten verlassen sich darauf, eine Append-Abfrage zu erstellen, um das Feld zu ändern.

Erstellen Sie die erste Tabelle, die das Feld für den Zählertyp enthält, das Sie mit einer anderen Nummer beginnen möchten. Geben Sie keine Datensätze ein. Erstellen Sie eine zweite Tabelle mit einem einzelnen langen Feld vom Typ Ganzzahl, das denselben Namen wie das Zählerfeld in der ersten Tabelle hat. Erstellen Sie einen Datensatz in der zweiten Tabelle, indem Sie eine Nummer eingeben, die kleiner ist als die Nummer, bei der Sie den Zähler in der ersten Tabelle starten möchten. Erstellen Sie eine Append-Abfrage, um den einen Datensatz in der zweiten Tabelle an die erste Tabelle anzuhängen, und führen Sie sie aus. Löschen Sie die zweite Tabelle, löschen Sie den Datensatz, den Sie an die erste Tabelle angehängt haben, und geben Sie Daten ein.

Von MVPS.org: http://access.mvps.org/access/tables/tbl0005.htm

Wenn Sie keine Append-Abfrage erstellen möchten, können Sie jederzeit die Tabelle einrichten und 1000 Zeilen Dummy-Daten aus Excel kopieren und einfügen, die Datensätze löschen, bis Sie die Nummer 1001 erreichen, und von dort aus fortfahren.

UPDATE: Erklärung aus gutem Grund hinzufügen

Der Grund dafür, dass die automatische Nummerierung nur auf 1 gesetzt wird, besteht darin, dass das Feld für die automatische Nummerierung als internes Referenzfeld verwendet werden soll und in der guten Datenbankpraxis im Allgemeinen nicht in öffentlich sichtbarer Form verwendet werden sollte. Es wird in Fällen verwendet, in denen in einer bestimmten Tabelle noch kein eindeutiges Element vorhanden ist, um einen eindeutigen Eintrag zu erstellen, mit dem die Tabelle durchsucht und indiziert werden kann.

music2myear
quelle
Es muss einen einfacheren Weg geben, dies zu tun ...
James Mertz
Ich nehme an, die gute Nachricht ist, dass Sie, wenn Sie mehrere Tabellen mit einer solchen automatischen Nummerierung erstellen müssen, einfach eine erstellen, sie in einer "Vorlagendatenbank" speichern und sie einfach nach Bedarf in neue Datenbankdateien kopieren können.
music2myear
0

Dies ist ein ziemlich alter Thread, der jedoch immer noch als eines der drei besten Google-Suchergebnisse angezeigt wird.

Ein Grund, warum ein Benutzer möglicherweise den Wert eines Felds für die automatische Nummerierung ändern möchte, besteht darin, einen Fehler zu korrigieren, der durch die Datenbankbearbeitung verursacht wird. Wenn ein Administrator einige wichtige Änderungen an einem Front-End einer Datenbank vornehmen möchte, erstellt dieser Administrator möglicherweise Kopien aller zugehörigen Tabellen und leitet eine Entwicklungskopie des Front-End an diese Back-Ends weiter. Wenn die Änderungen ausreichend sind, kann er einfach die Produktionskopie des Frontends durch seine Kopie ersetzen und alle verknüpften Tabellen nach dem Testen umleiten.

Kein Problem, oder? Nun, die Inkrementierung der automatischen Nummerierung bleibt beim Frontend. Wenn also die Produktionsseite die automatische Nummerierung nur um 50 oder 500 oder 5000 Nummern erhöht hat, während der Administrator an der Kopie gearbeitet hat, versucht die neue Produktionskopie, dieselben Nummern erneut zu versuchen, und kann keine Elemente in diese Felder eingeben zu einer Zeit, bis es "im klaren" wird. Kopieren Sie 50, 500 oder 5000 Zeilen mit Excel-Daten und versuchen Sie, sie einzufügen. In jeder Zeile tritt ein Fehler auf (unterdrücken Sie weitere Nachrichten, wenn sie angezeigt werden), aber die automatische Nummerierung erhöht sich um diesen Betrag, und Sie sind gut wieder gehen. Wenn Sie auf diese Weise Autonummern verwenden, wird empfohlen, die Zahlen auf die Produktionsdatenbank zu erhöhen, bevor Sie sie mit Ihrer Entwicklungskopie überschreiben.

Dies ist auch eine Möglichkeit, Ihre automatische Nummerierung bei etwas höher als 1 zu starten. Wie in den alten Tagen, als der Zähler für Seitenbesuche auf Ihrer Geocities-Homepage auf 17.479 gesetzt wurde, als er tatsächlich nur 16 Mal besucht wurde. Von dir.

RunsWithScissors
quelle
0

Eine einfache Möglichkeit, etwas Ähnliches zu erreichen, besteht darin, ein Autonumber-Feld (z. B. "ID") und ein zweites berechnetes Feld (z. B. "ItemID") zu haben und die Formel "1000+ [ID]" für das berechnete Feld einzugeben. Dieses neue Feld verfolgt nun automatisch das Feld "Autonumber", beginnt jedoch bei 1001 anstelle von 1.

Brent
quelle
0

Ich glaube, Sie können Ihren benutzerdefinierten Inkrementbereich erreichen, indem Sie zuerst eine versteckte Tabelle erstellen, die die anfängliche Lücke der automatischen Inkremente von Null bis zu Ihrer Wahl beibehält, z. Diese Tabelle behält die Werte 0 bis 1050 bei. Dann beginnen Sie mit den Schritten 1055, 1060, 1065 usw. Sie werden diesen Teil der Daten aus der Tabelle ausblenden. Hoffe das hilft. Anscheinend wurde Access so konzipiert, dass es zunächst von Null aus aussieht, da Konflikte auftreten werden.

ssurjie
quelle