Acc 97: Speicherung/Änderung Autowert

Hallo,
bei einer Tabelle habe ich als Schlüssel und ID einen Autowert.
Die Tabelle ist mit anderen Tabellen Verknüpft.
Wenn ich ein Formular nur unvollständig ausfülle, kriege ich eine Fehlermeldung, aber der Autowert wird trotzdem inkrementiert (aber nicht in die Tabelle übernommen). Beim nächsten Versuch wo es keine Probleme gibt, wird dann der nächste Autowert genommen,->> es fehlt also einer!!
Frage: Wo wird dieser Autowert gespeichert? Kann man es irgendwie verhindern, das der Wert inkrementiert wird, wenn ein Fehler auftritt?
Gibt es eine Lösung!

Bis dann,
jan

Hi,
man muß sich im klaren sein, wozu ein AutoWert da ist. Es ist eine Zahl, die weiter nichts aussagt, als daß sie innerhalb der Tabelle eindeutig ist und, egal wieviele Benutzer „gleichzeitig“ einen neuen Datensatz erzeugen, dieser IMMER unterschiedlich ist.
Stell Dir vor, Du bist in einem Formular, erzeugst einen Datensatz, und arbeitest. Ein anderer Benutzer erzeugt auch einen und hat einen entsprechend höheren Autowert. Du wirfst Deine Änderungen weg, aber der andere Benutzer speichert - die Lücke ist da.

Frage: Wo wird dieser Autowert gespeichert?

Nirgendwo, er wird weggeschmissen, weil man sonst diese Garantie nicht geben könnte.

Kann man es
irgendwie verhindern, das der Wert inkrementiert wird, wenn
ein Fehler auftritt?

Nein.

Gibt es eine Lösung!

Wenn Du unbedingt fortlaufende Nummern brauchst, nimm keinen Autowert. Vergebe Deine Nummern selbst, und zwar in der Ereignisprozedur BeforeUpdate des Formulars. Dort schaust Du nach DMax(Spaltenname), addierst 1 dazu, und fertig ist es.:

Private Sub Form\_BeforeUpdate(Cancel As Integer)
Feldname = DMax("Feld", "Tabelle") + 1
End Sub

Gruß

J.

Danke, habs befürchtet. (o.T.)
,

Als Ergänzung noch : Der Ansatz mit AutoWert ist völlig korrekt. Man sollte einen solchen, maschinengenerierten Unique-Index auch nicht mit inhaltsschwangeren Daten (wie z.B. einer „fortlaufenden Beleg-Nummer“) verwechseln.
Eine Lösung für das Problem gibt es trotzdem, falls eine fortlaufende Nummer gewünscht wird :

  1. Eine Tabelle mit identischen Feldern bauen (auch den Autowert als Autowert übernehmen).
  2. Mit einer Anfügeabfrage den Tabelleninhalt von alt nach neu kopieren.
  3. Die alte Tabelle um ein Long-Feld ergänzen, das dann meinetwegen „fortlaufende Milaxennummer“ heißt.
  4. Per Aktualisierungsabfrage bei entsprechenden Kriterien den Autowert aus Tabelle neu in das Feld „fortlaufende Milaxennummer“ übernehmen.
  5. Die Tabelle neu physikalisch löschen.

Falls es Ausführungsprobleme gibt, bitte Mehl [email protected].
Gruß kw