valume91
Goto Top

Access, Nummerierung für Datensätze mit gleichem FS

Wie kann ich alle Datensätze in einer Tabelle, die den gleichen Wert in einem Feld haben, durchnummerieren lassen?

Guten Morgen liebes Forum

Ich stehe vor einem ziemlichen Problem:

Ich habe eine Tabelle "Seriennummer". In dieser Tabelle existiert ein Feld "Verwqf".
Dieses erhält Fremdschlüssel. Nun sollen alle Datensätze mit dem gleichen Wert im Feld "Verwqf" durchnummeriert werden.
Also zum Beispiel:

Verwqf: Zähler:

23 1
23 2
23 3
23 4
12 1
12 2
12 3
8 1
7 1
7 2
7 3

Sobald ein neuer Datensatz mit z.B. Verwqf 23 erfasst wird erhält er den Zähler 5. Wird er gelöscht und wieder erstellt wird dem neuen auch die 5 vergeben, und nicht die 6.
Ist dies Möglich?

MfG Valume

Content-ID: 123496

Url: https://administrator.de/contentid/123496

Ausgedruckt am: 22.11.2024 um 05:11 Uhr

AndreasHoster
AndreasHoster 26.08.2009 um 13:31:41 Uhr
Goto Top
Prinzipiell: Ja
Ich hoffe, VBA ist kein Fremdwort für Dich.

Für die vorhandenen Datensätze:
In VBA die Tabelle, sortiert nach Verwgf, öffnen, Datensatz für Datensatz durchgehen und jeweils eine um 1 höhere Nummer ins Feld Zähler eintragen, bei Änderung von Verwgf wieder bei 1 anfangen.

Für neue Datensätze wirds etwas problematischer, da müsste man erstmal klären, was passiert wenn jemand nicht den letzten Datensatz, sondern einen davor löscht. Sollen die Lücken dann auch gefüllt werden?
Desweiteren, wie kommen die Datensätze da rein? Über ein Formular, über direkten Tabellenzugriff, per ODBC?

Und falls mehrere User gleichzeit dran arbeiten wirds richtig kompliziert, weil dann die Emittlung und Eintragung zwingend in einer Transaktion stattfinden muß und man die Tabelle sperren muß, damit nicht mehrere das gleichzeitig machen.

Was spricht eigentlich gegen einen Autowert und man hat halt Lücken bei Löschungen?
Valume91
Valume91 26.08.2009 um 14:46:43 Uhr
Goto Top
Hi Andreas

Danke erstmal für die schnelle Antwort!
Ich hoffe, VBA ist kein Fremdwort für Dich.
Ist es nicht. Jedoch bin ich nicht sehr bewannt darin.

In VBA die Tabelle, sortiert nach Verwgf, öffnen, Datensatz
für Datensatz durchgehen und jeweils eine um 1 höhere Nummer
ins Feld Zähler eintragen, bei Änderung von Verwgf wieder
bei 1 anfangen.
Gut bei den bestehenden kann ich dies bereits machen. Nur soll das ja auch bei neuen geschehen.
Sollen die Lücken dann auch gefüllt werden?
Nein.
Desweiteren, wie kommen die Datensätze da rein?
Über ein Formular, das sich im Design Master befindet. Die Daten bzw. die Tabelle befindet sich jedoch im backend, das sollte jedoch keine Rolle spielen.
Und falls mehrere User gleichzeit dran arbeiten...
Tun sie nicht.
Was spricht eigentlich gegen einen Autowert?
Der Kunde ;)

Ich hoffe ich hoffe ich konnte dir die nötigen Informationen geben, und du kannst mir weiterhelfen.

MfG Valume
AndreasHoster
AndreasHoster 26.08.2009 um 16:55:22 Uhr
Goto Top
OK, wenn die Daten über ein Formular reinkommen, dann könnte man ins Formular-Ereignis Vor Aktualisierung eine Routine einbauen, die den momentan höchsten Zähler des entsprechenden Verwgf Wertes ermittelt, die mit 1 addiert und in das Formular ins entsprechende Feld einträgt.

Sollte auch als Ausdruck gehen, müsste wohl nicht unbedingt VBA sein.