AutoWert-Feld wird nach dem Komprimieren einer Access-Datenbank nicht zurückgesetzt

Moderat: Erfordert grundlegende Makros, Codierung und Interoperabilität wissen.

Dieser Artikel bezieht sich auf Microsoft Access-Datenbank (.mdb oder .accdb) und Microsoft Access-Projekt (ADP).

Problembeschreibung

Beim Löschen der letzten Datensatz oder Datensätze in einer Tabelle oder in einem Formular ein AutoWert-Feld hat und dann die Datenbank komprimieren, startet AutoWert-Feld nicht bei der nächsthöheren Zahl, wenn Sie neue Datensätze hinzufügen.

Ursache

Installiert Microsoft Jet 4.0 Service Pack 4 (Msjet40.dll, Version 4.00.2927.4) oder höher.

Problemlösung

Verwenden Sie eine der folgenden zwei Methoden, dieses Verhalten zu umgehen.

Methode 1

Eine neue Tabelle erstellen und vorhandene Datensätze zur neuen Tabelle anfügen. Neue Datensätze, die dieser Tabelle hinzugefügt werden, beginnt mit AutoWert-Wert eines inkrementellen Wert programmgesteuert festlegen.

Hinweis Wenn Sie Ihre Datensätze nicht mehr benötigen, können Sie das AutoWert-Feld auch zurücksetzen, alle Datensätze aus der Tabelle löschen und dann die Datenbank komprimieren. Jedoch wenn Sie diese Methode verwenden, können nicht Sie die gelöschten Datensätze zurück.

Gehen Sie folgendermaßen vor, um eine neue Tabelle erstellen und vorhandene Datensätze in die neue Tabelle in einer Microsoft Access-Datenbank (MDB) anfügen:
  1. Klicken Sie auf die Tabelle im Datenbankfenster.
  2. Drücken Sie STRG + C.
  3. Drücken Sie STRG + V.
  4. Klicken Sie im Dialogfeld Tabelle einfügen als klicken Sie auf Nur StrukturGeben Sie die Namen TblNewTableund klicken Sie dann auf
    OK.
  5. Zeigen Sie in Microsoft Office Access 2003 oder Microsoft Access 2002 im Menü Ansicht auf Datenbankobjekte , Abfragenauf und doppelklicken Sie erstellt eine neue Abfrage in der Entwurfsansicht.

    Klicken Sie in Microsoft Office Access 2007 auf der Registerkarte Erstellen und klicken Sie dann auf Entwurf in der Gruppe .
  6. Klicken Sie im Dialogfeld Tabelle anzeigen klicken Sie auf die alte Tabelle, klicken Sie auf Hinzufügenund klicken Sie dann auf Schließen.
  7. Klicken Sie in Access 2003 oder Access 2002 im Menü Abfrage auf Aktualisierungsabfrage .

    Klicken Sie in Access 2007 auf Anhängen Abfragetyp Gruppe auf der Registerkarte Entwurf .
  8. Klicken Sie im Dialogfeld Anfügen klicken Sie im Feld Tabellenname TblNewTable und klicken Sie auf OK.
  9. Fügen Sie alle Felder in den Abfrageentwurfsbereich außer dem AutoWert-Feld.
  10. Klicken Sie in Access 2003 oder in Access 2002 im Menü Abfrage auf Ausführen , um die Datensätze Ihrer neuen Tabelle anzufügen.

    Klicken Sie in Access 2007 in der Gruppe auf der Registerkarte Ergebnisse auf die Datensätze Ihrer neuen Tabelle anzufügen Ausführen .
  11. Öffnen Sie die Tabelle TblNewTable, und fügen Sie einen Eintrag.

    Beachten Sie, dass der AutoWert die nächst höhere Zahl aufweist.

Methode 2

Die folgende Funktion können in einer Microsoft Access-Datenbank (MDB) Sie den Ausgangswert Ihres AutoWert-Feldes programmatisch zurückzusetzen. Sie können die Funktion einem Modul hinzufügen und anschließend im Debugfenster ausführen. Oder Sie können die Funktion von einer Befehlsschaltfläche oder einem Makro aus aufrufen.

Hinweis Damit dieser Code ordnungsgemäß ausgeführt, müssen Sie sowohl die Microsoft ActiveX Data Objects verweisen 2.x und Microsoft ADO Ext 2.x for DDL and Security Libraries (2.x ist 2.1 oder höher.) Dazu klicken Sie auf
Verweise im Menü Extras im Visual Basic-Editor. Stellen Sie sicher, dass das Microsoft ActiveX Data Objects 2.x und Microsoft ADO Ext 2.x for DDL and Security Libraries Kontrollkästchen.
Function ChangeSeed(strTbl As String, strCol As String, lngSeed As Long) As Boolean'You must pass the following variables to this function.
'strTbl = Table containing autonumber field
'strCol = Name of the autonumber field
'lngSeed = Long integer value you want to use for next AutoNumber.

Dim cnn As ADODB.Connection
Dim cat As New ADOX.Catalog
Dim col As ADOX.Column

'Set connection and catalog to current database.
Set cnn = CurrentProject.Connection
cat.ActiveConnection = cnn

Set col = cat.Tables(strTbl).Columns(strCol)

col.Properties("Seed") = lngSeed
cat.Tables(strTbl).Columns.Refresh
If col.Properties("seed") = lngSeed Then
ChangeSeed = True
Else
ChangeSeed = False
End If
Set col = Nothing
Set cat = Nothing
Set cnn = Nothing

End Function

Status

Microsoft hat bestätigt, dass es sich um ein Problem bei den Microsoft-Produkten handelt, die im Abschnitt „Eigenschaften“ aufgeführt sind.

Weitere Informationen

Schritte zum Reproduzieren des Problems

  1. Installieren Sie Microsoft Jet 4.0 Service Pack 4 (SP4) oder höher.
    Weitere Informationen dazu, wie Sie das neueste Microsoft Jet Servicepack erhalten, finden im folgenden Artikel der Microsoft Knowledge Base:

    239114 so erhalten Sie das neueste Servicepack für Microsoft Jet 4.0-Datenbank-Engine

  2. Erstellen Sie in Access 2003 oder Access 2002 eine neue Datenbank.
  3. Erstellen Sie folgende Tabelle:
       Table: tblExample
    ---------------------
    Field Name: ID
    Data Type: AutoNumber

    Field Name: MyText
    Data Type: Text

    Table Properties: tblExample
    ----------------------------
    PrimaryKey: ID

  4. Speichern Sie die Tabelle als
    TblExample.
  5. Klicken Sie im Menü Ansicht auf Datenblattansicht.
  6. 10 Datensätze zur Tabelle hinzufügen.
  7. Löschen Sie die letzten drei Datensätze zur Tabelle hinzugefügt.
  8. Schließen Sie die Tabelle.
  9. Klicken Sie im Menü Extras auf Datenbank-Dienstprogrammezeigen Sie und klicken Sie dann auf Datenbank komprimieren und Reparieren.
  10. Öffnen Sie die Tabelle TblExample.
  11. Die Tabelle einen neuen Datensatz hinzufügen.

    Beachten Sie, dass der AutoWert 11 ist und nicht 8, wie erwartet.
Hinweis Nachdem Sie das Projekt im Microsoft Access-Projekt (ADP) komprimiert die Nummer angezeigt, die im AutoWert-Feld zu erwarten, wenn Sie den Datensatz hinzufügen. Beim Speichern des Datensatzes wird der AutoWert jedoch geändert. In diesem Beispiel sehen Sie 8 bis der Datensatz. Dann wird die Nummer 11. Dies geschieht, da der AutoWert auf dem Server zugewiesen wird, nachdem der Datensatz übergeben wird.
Klicken Sie für weitere Informationen auf die folgende Artikelnummer, um den Artikel in der Microsoft Knowledge Base anzuzeigen:

202121 Standardwert Ausgangswerte und inkrementellen Benutzeroberfläche kann nicht geändert werden.

Eigenschaften

Artikelnummer: 287756 – Letzte Überarbeitung: 23.01.2017 – Revision: 2

Feedback