Translate

Sonntag, 5. Februar 2012

BUG in der Komprimierfunktion in MS Access 2010

Mit Autowert-Felder (Inkrement) ohne PrimaryKey können Sie eine böse Überraschung erleben, nach dem Sie die Komprimierfunktion in MS Access 2010 ausgeführt haben.
Es kann passieren, dass der nächst automatisch vergebene Wert nicht unbedingt der letzter eingetragener Wert + 1 ist.

Die Folge ist, dass Ihr Autowert-Feld keine eindeutigen Nummern mehr enthält!
Dies kann zwar mit einem Index ohne Duplikate verhindert werden, aber eine Fehlermeldung bekommen Sie dennoch.
Es kann also sein, dass gar kein Datensatz mehr angelegt werden kann, bis das Autowert-Feld einen Wert erzeugt, der noch nicht in der Tabelle vorhanden ist.
Beheben können Sie dies, über folgende Aktionsabfrage:
INSERT INTO MeineTabelle ( MeinAutowertFeldname ) SELECT 6223 FROM MeineTabelle

Wobei der Wert 6223, Ihr nächster gewünschtrer Wert ist.

Der Fehler stellt sich jedoch wieder ein, sobald Sie die Komprimierungsfunktion unter MS Access 2010 wieder laufen lassen.

Dauerhaft bekommen Sie den Fehler nur im Griff, wenn Sie auf Ihr Autowert-Feld den PrimaryKey setzen.

Mit dem folgenden Beispiel können Sie den Fehler reproduzieren: www.abiss.de/downloads/public/Fehler2010Beispiel.zip
Bei Eingabe eines neuen Datensatzs erscheint im Feld ID der Wert 6224. Brechen Sie den Datensatz ab und machen den Vorgang erneut, wird der nächste Wert 6225 angeboten usw. Hier soweit alles korrekt.

Nach komprimierung der Datenbank unter MS Access 2000/2002/2003/2007, wird wieder der Wert 6224 oder höher erzeugt.
Nach komprimierung der Datenbank unter MS Access 2010, wird der Wert 4401, 4402 usw... erzeugt!

Hinweis: Dieser Fehler in der Komprimierungsfunktion betrifft nur MS Access 2010.

3 Kommentare:

  1. Hallo,
    super Tipp mit der Abfrage zum Korrigieren des Autowertes.
    Aber was mache ich, wenn ich eben gerade den Autowert NICHT im Primary Key haben will, weil eine Kombination anderen "normalen" Felder in der Tabelle den Primary Key bilden sollen?

    AntwortenLöschen
    Antworten
    1. Sorry, hatte den Kommentar gar nicht mitbekommen...
      Zum Thema Autowert hilft dieses Thema bestimmt weiter:
      http://msofficeinside.blogspot.de/2013/05/ms-access-autowert-zurucksetzen.html

      Gruß
      JPA

      Löschen
  2. Vielen Dank für diese Information. Klassisch Microsoft .

    Beim ReparaturInsert sollte man möglichst eine Tabelle mit nur einem Satz in der "From" Klausel angeben.

    lg
    Andi

    AntwortenLöschen