Access 2000: 2 Probleme

Hallo,

(1) Datensatznummer ohne Primärschlüssel
Zwar wir häufig gesagt, dass man zur Datensatznummerierung nicht den Primärschlüssel heranziehen soll, aber welche elegante Lösung gibt es denn für Tabellen? Zwei Autowerte innerhalb einer Tabelle sind ja nicht erlaubt.

(2) Gültikgeitsregel über mehrere Felder einer Tabelle
Ich möchte eine Gültigkeitsregel über mehrer Felder haben, so dass geprüft werden soll, ob bereits in einem anderen Feld Werte (Ids) stehen.
So funktioniert es leider nicht (auch wenn ein Feld daraufhin gelöscht wird, erscheint meine Meldung).

=[Feld1]>0 Und [Feld2]>0

Vielen Dank im Voraus
Stefan Horn

Hi!

Hallo,

(1) Datensatznummer ohne Primärschlüssel
Zwar wir häufig gesagt, dass man zur Datensatznummerierung
nicht den Primärschlüssel heranziehen soll, aber welche
elegante Lösung gibt es denn für Tabellen? Zwei Autowerte
innerhalb einer Tabelle sind ja nicht erlaubt.

Wer erzählt denn sowas *ggg Dies ist durchaus eine Möglichkeit - allerdings natürlich nicht immer! Z. B. kann man Rechnungsnummern als Primärschlüssel heranziehen.
Im Regelfall sollte man aber eher (z. B. bei Personentabellen) einen autowert zur Verknüpfung benutzen, aber den Primärschlüssel über den Namen legen, damit dieser eindeutig ist…
Zwei Autowerte in einer Tabelle sind natürlich im Regelfall albern.

(2) Gültikgeitsregel über mehrere Felder einer Tabelle
Ich möchte eine Gültigkeitsregel über mehrer Felder haben, so
dass geprüft werden soll, ob bereits in einem anderen Feld
Werte (Ids) stehen.
So funktioniert es leider nicht (auch wenn ein Feld daraufhin
gelöscht wird, erscheint meine Meldung).

=[Feld1]>0 Und [Feld2]>0

??? Watt genau meinst denn damit ;o)

Bernd

Hallo Bernd

konzentrieren wir uns zunächst auf folgendes Problem:

(1) Datensatznummer ohne Primärschlüssel

Es geht um eine Datenbank zur Verwaltung von Vorratskisten an unserem Institut. Die ist eigentlich fast fertig (Tabellen, Bezüge, usw.). Jetzt soll es aber noch eine eigene Nummer für jede Kiste geben. Diese soll bei 1 anfangen und fortlaufend um 1 erhöht werden (auch wenn Kisten d.h. Datensätze gelöscht werden, wie ich es schon z. B. testhalber gemacht habe). Der für diese Tabelle bestehende Primärschlüssel ist ein Autowert, den ich aufgrund der bereits bestehenden Bezüge auch nicht mehr zurücksetzen kann. Welche Möglichkeit habe ich noch, eine solche Nummerierung einzufügen?
Grüße, Stefan

Hallo Stefan, hallo Bernd,

zu (1) Ganz gelungen finde ich einen PK über den Namen, und damit zur eindeutigkeit meist auch noch Vornamen, Geburtsdatum, nicht sehr günstig! Die Verknüpfte Tabell muss dann ja auch immer diese zum PK gehörenden Felder enthalten. Der PK als Autofeld, und ein Index ohne Duplikate über die voran genannten Felder scheint mir günstiger.

zu (2) Funktion des PK, der Autowert, und die der Nummerierung erscheinen mir doch gleich! Also einfach den PK anzeigen, das IST die Kistennummerierung! Alternativ: Falls die Nummer aus irgendeinem Grund frei vergeben werden muss, z.B. Nummern auslassen, Eine Funktion beim anlegen des Datensatzes, die den aktuellen MAX-Wert des Feldes ermittelt und mit MAX+1 vorbelegt, kleinere Werte bei manueller Nachbesserung müssen dann allerdings abgefangen werden.

Gruß
Alex

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi Stefan,

nimm eine neue Tabelle in der Du die aktuelle, laufende Nummer für die Kisten hinterlegst. Immer den höchsten Wert. Bei der Neuanlage einer Kiste holst Du Dir diesen Wert aus der Tabelle, erhöst diesen um eins, schreibst diesen Wert in die Kistentabelle und im Anschluß in die neue Tabelle. Bei uns wird diese Tabelle tblTan genannt.

MfG
Ingo

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]