Neuer Datensatz bei MS Access?
Hallo,
ich bin dabei, für ein Projekt im Studium eine Datenbank mit Hilfe von Microsoft Access (2016) zu erstellen.
Dabei habe ich von Anfang an eine Tabelle mit 6 Casinos.
Ich bin nun dabei, ein Formular zu erstellen, mit dem man sich einen Datensatz suchen oder erstellen kann. Ein Datensatz soll auch gelöscht werden können, falls man sich bspw. vertippt hat. Mit Hilfe von Befehlsflächen funktioniert das alles bis hierhin.
Jetzt kommt aber das Problem:
Ich habe die Casinos mit den IDs 101; 102; ...; 106
Wenn ich ein neues Casino erstelle, wird Casino 107 erstellt.
Lösche ich diesen Datensatz dann wieder, ist er zwar weg, aber:
Wenn ich nun ein neues Casino erstelle, vergibt MS Access (MSA) die Nummer 108, obwohl es Casino 107 sein müsste, weil das ja vorher gelöscht wurde.
Lösche ich das dann wieder und erstelle ein neues, vergibt MSA die Nummer 109, obwohl das Casino ja die 107 haben müsste.
Meine Frage ist: Was muss ich genau tun, damit Access die Nummern korrekt vergibt?
Wenn ich aus MSA raus- und wieder reingehe, fängt es zwar wieder mit 107 an, aber das kann ja nicht die Dauerlösung sein.
2 Antworten
MS Access vergibt die Nummern 100% ig korrekt, da ein einmal vergebener AutoWert nicht nochmal vergaben wird. Die ID ist wahrscheinlich auch Dein Primärschlüssel. Das macht aus Datenbanksicht absolut Sinn, dass ein einmal vergebener Schlüssel nicht nochmal vergeben wird. Stell Dir vor, Du hast eine Personaltabelle, bei der die ID die Personalnummer ist. Nun löscht Du (wenn das Sinn macht) den letzten Datensatz, z.B. mit der Personalnummer 10. Dann fügst Du einen neuen Datensatz hinzu und der bekäme dann wieder die 10. Dann hätte der neue Mitarbeiter schon alle Fehlzeiten und Urlaub etc... geerbt, wenn in anderen Tabellen weitere Infos zu der Personalnummer stünden (und keine Löschweitergabe in der DB vereinbart war).
Also, sei froh, dass das System so sauber arbeitet. Der Primärschlüssel sollte ja auch nur der internen Verarbeitung dienen.
Wenn Du unbedingt eine durchlaufende Nummer haben willst, füge ein neues Feld hinzu (Zahlenfeld) und schreibe dann z.B. in den ersten Datensatz eine 1. Als Standardwert trägst Du dann im Feld folgendes ein:
=DomMax("[DieserFeldname]";"Tabellenname")+1
Dann erhält jeder neue Datensatz einen um 1 höheren Wert, als der größte vorkommende Wert in diesem Feld.
Gruß, Armin
Schaue dir deine Datenbank genau an. Es müssten noch die Einträge von 107, 108 und 109 vorhanden sein. Falls nicht. Dann füge als Ergänzung zur Löschung noch -1 hinzu (als Befehl)