[MS Access] AutoWert zurücksetzten

bitfunker

ewohner
Registriert
Okt. 2001
Beiträge
18.283
Hi, Folks!

Ich bastele gerade an einer Teilnehmerdatenbank mit Access.

Klapp soweit erstaunlich gut ;), auch das Formular ist schon fertig.
Nun habe ich aber noch ein Problem: Ich habe als Primärschlüssel ein Feld "TN-Nummer" in allen Tabellen, Felddatentyp "AutoWert". Im Formular habe ich testweise fünf Teilnehmer eingegeben, die Datensätze aber wieder gelöscht.
Doch trotzdem zählt der AutoWert immer weiter, d.h. ich habe zwar keinen Datensatz mehr, aber die TN-Nummer wird auf "6" gestellt.
Kann ich das wieder auf 1 zurücksetzten? Den Felddatentyp kann ich ja wegen der bestehenden Beziehungen nicht mehr ändern.

Danke für Eure Hilfe!
 
Wenn alle Datensätze gelöscht sind, "Datenbank komprimieren/reparieren". Aber dafür ist das eigentlich nicht gedacht.
 
Nicht dafür gedacht, funzt aber bestens. Danke! :daumen:

Aber anscheinend ist "AutoWert" sowieso nicht optimal für meine Zwecke, da später TN austreten und Datensätze gelöscht werden könnten, die Nummer aber bei AutoWert vergeben bleibt.
Kann ich das so einrichten, dass die TN-Nummer einfach der fortlaufenden Nummer des Datensatzes entspricht?
 
Hi b-runner

b-runner schrieb:
Aber anscheinend ist "AutoWert" sowieso nicht optimal für meine Zwecke
stimmt.

Ich gehe dabei über die DMax-Funktion, gucke mir damit den höchsten wert im Feld an und nehme für den neuen Datensatz die nächsthöhere Nummer (+1).

Gruß WW
 
Hm, klingt schon mal gut, aber meine Tage, in denen ich in Access fit war, sind leider schon 'ne Weile her. Daher: Geht es bitte ein wenig genauer? Danke! :)
 
Hi b-runner,

zur DMax-Funktion selbst guckst Du ACCESS-Hilfe, muss ich selbst auch immer wieder gucken, weil ich die Sachen nicht auswendig lerne, wenn ich nachgucken kann, und die Beispiele sind ganz o.k.

Grundsätzlich versuche ich meine Datenbänke so aufzubauen, dass Neueingaben und Änderungen über spezielle Formularaufrufe gesteuert werden (aus Sicherheitsgründen gebe ich möglichst nicht direkt in verknüpfte Tabellen ein).

Hier würde ich irgendwo im Startformular einen button: "Neue Daten" platzieren, der das Formular zur Datensatzeingabe aufruft. In diesem Aufruf oder in dem open-Ereignis des Eingabe-Formulars kannst Du die DMax-Funktion einbasteln, die die nächste freie TN-Nummer ermittelt "Var = DMax (x,y,z) + 1" und entweder in ein ungebundenes Feld, das beim Speichern in den Datensatz einfließt, oder direkt in das TN-Feld ablegt - je nach Sicherheitsbedürfnis im Hinblick auf den User ;) .

Sicherheitsabfrage im Code nicht vergessen wenn noch keine Datensätze vorhanden sind. Dann liefert DMax glaub ich keinen vernünftigen Wert.

Gruß WW
 
Auweh, das wird noch ein langer Nachmittag im Büro. Mal sehen, wie weit ich komme...

Aber auf jeden Fall mal: Danke! :)
 
b-runner schrieb:
Aber anscheinend ist "AutoWert" sowieso nicht optimal für meine Zwecke, da später TN austreten und Datensätze gelöscht werden könnten, die Nummer aber bei AutoWert vergeben bleibt.
Kann ich das so einrichten, dass die TN-Nummer einfach der fortlaufenden Nummer des Datensatzes entspricht?

Wieso sollen die Nummern eigentlich fortlaufend sein? Die Anzahl der Teilnehmer bekommst du sehr einfach herraus und wer welche Nummer hat ist doch auch Wurst. Du kannst den Autowert schließlich anweisen nur einen bestimmten Zahlenbereich zu nutzen und die Nummern nicht fortlaufend zu vergeben :freaky:
Übrigens bleibt die Nummer nicht wirklich vergeben, wenn es keine weiteren freien fortlaufenden Nummern mehr gäbe würden die gelöschten wieder verwendet. Aber so ist's halt einfacher.
Mit der Nummer des Datensatzes meinst du die Nummer die im Navigationsfeld (z.B. der Tabellenansicht) angezeigt wird? Verlaß dich nicht darauf das der Datensatz Nummer 25 immer der Datensatz Nummer 25 bleibt! Das verwaltet die Datenbank wie es ihr paßt und das ist auch gut und richtig so. Du hast als Programmierer dafür zu sorgen jedem Datensatz eine eindeutige ID zu verpassen, wenn du Wert darauf legst deine Daten wiederzufinden ;) Für die Datenbank sind alle Daten gleich :evillol:
 
Zurück
Oben