Ein letzter Tipp für heute (diesmal von mir selbst).
Access kann je Tabelle nur genau ein Feld als Autowert verwalten.
Was nun, wenn dieses Feld durch Löschen von Datensätzen (größere) Lücken aufweist?
Ganz einfach: im Tabellen-Design definiere ich ein neues Zahlenfeld, z. B. TempZahl. Dann rufe ich die Tabelle erneut im Design-Mode auf und ändere das bisherige Autowert-Feld (AutoZahl) auf Zahl sowie mein neues Feld auf Autowert.
Öffne ich die Tabelle dann im normalen Modus, füllt Access mein Feld TempZahl brav mit einer neuen laufenden Nummer. Das könnte ich natürlich über eine Selektion noch beschränken, z. B. auf alle Datensätze des letzten Jahres oder aber eine neue Sortierung per Query vornehmen.
Anschließend kann ich mein ursprüngliches Autowert-Feld löschen und TempZahl in AutoZahl umbenennen. Schwups ist mein Datenbestand mit einem neuen Autowert (ohne Lücken) versehen. Ggf. muss ich meine Tabelle einfach nur einmal durchscrollen.
ACHTUNG: Referenzen in andere Tabellen gehen dadurch natürlich kaputt!
Aber dieser Trick hat sich besonders beim Aufbau eines Basis-Datenbestandes aus Fremdquellen mit anschließender Duplikat-Entfernung gut bewährt.
Hallo crystal,
Wozu? Bei Autowerten mach' ich mir doch keine Gedanken um Lücken.
Wenn du für irgendwas eine (gespeicherte) fortlaufende Nummerierung
ohne Lücken brauchst, nimm ein Extrafeld, und kümmere dich selber um
durchlaufende Nummerierung.
Da gehen dann auch keine Beziehungen den Bach runter.
gruss ekkehard
Hallo,
wenn es unbedingt sein muss, kann man auch mit einem Autowertfeld eventuell entstandene Lücken wieder füllen, problemlos, ohne VBA.
Aber, wie bereits gesagt ein Autowert dient ausschließlich als Primärschlüssel und ist im Regelfall auch nicht zu sehen. Somit sind Lücken bedeutungslos.
Eure Kritik ist ja wirklich berechtigt und es geht bei meinem Tipp auch eher nur um "Schönheit". Ich habe z. B. eine Kundentabelle mit ca. 8000 Einträgen, die aus mehreren Text-Dateien importiert wurden. Durch fehlerhafte und doppelte Importe musste ich mehrfach viele Datensätze wieder löschen, so dass mein aktueller Autowert dann auf 27000 stand. Mit meinem Trick habe ich die (sortierte) Tabelle dann 1-2-3 neu durchnummeriert und jetzt einen Autowert von 8000. Das finde ich einfach schön.
Wie gesagt - es ist ein Tipp für einen frühen Zeitpunkt einer Applikations-Entwicklung und "nett", wenn der Autowert nicht versteckt, sondern z. B. als KundenNummer sichtbar ist.
Schließlich liefert der Tipp Hinweise darauf, wie Access intern Autowerte behandelt und auch das finde ich (zumindest akademisch) interessant.
Hallo,
da die Beziehungen ohnehin dann nicht mehr stimmen, kannst Du einfach das Autowertfeld löschen, Tabelle speichern, Autowertfeld wieder einfügen. Und schon ist ohne Lücken wieder neu nummeriert. Ein Temp Feld braucht es dazu nicht.
Und sobald das Autowertfeld Primärschlüssel war, dessen Wert in anderen Tabellen als Fremdschlüssel dient (was ja eher der Regelfall ist) wird das alles viel aufwendiger.
ZitatDurch fehlerhafte und doppelte Importe ...
Man könnte ja auch sagen: Wenn man gleich ordentlich arbeitet, kann man sich viel Aufräumerei sparen.
Sorry, aber...
Zitat von: ebs17 am Juli 20, 2016, 21:29:45
Wenn man gleich ordentlich arbeitet, kann man sich viel Aufräumerei sparen.
scheinbar bist du als perfekter Access-Entwickler auf die Welt gekommen - Gratulation! Die meisten Leute dagegen haben das große Glück, über Kindheit, Jugend und Ausbildung allmählich erst in diesen Job hineinzuwachsen, wobei logischerweise auch (Anfänger-) Fehler gemacht werden.
Derartig sinnfreie und wenig zielführende Kommentare kannst du dir zukünftig also gerne sparen.
ZitatACHTUNG: Referenzen in andere Tabellen gehen dadurch natürlich kaputt!
Ob es sinnfrei ist, vor dem Aktionieren eine zusätzliche Überlegung und ggf. eine Recherche dazu durchzuführen und sich nachträglich viel Arbeit und als Ungeübter viel Probleme zusätzlich aufzuladen, das mag jeder für sich beurteilen.
@ebs17:
Es wird nicht besser dadurch, dass du in deiner Replike willkürlich ein anderes Zitat als Grundlage für deinen Kommentar wählst. Natürlich ist es "falsch", ein Autowert-Feld in einer Tabelle neu anzulegen, wenn es Beziehungen aus anderen Tabellen dazu gibt. Was ja auch gar nicht möglich sein sollte, da diese Beziehungen einen derartigen Eingriff verhindern würden.
Sinnfrei ist im übrigen nicht das Bedenken der Konsequenzen des Handelns, weder bei der Arbeit mit Access noch sonstwo. Was demnach auch für dich und deine Äußerungen gilt. Als "sinnfrei" habe ich lediglich deinen wenig zielführenden Kommentar aus Antwort #5 bezeichnet.
Es wäre nett, wenn du auch bei kritischen Kommentaren stets bei der Sache bleiben könntest.
BTW:
Du machst dir regelmäßig nicht die Mühe, in deinen Beiträgen eine persönliche Anrede zu schreiben, also könntest du auch konsequenterweise auf das standardmäßig hinzugefügte "freundliche Glück Auf!" verzichten.