Autowert in Access eingrenzen

Hallo liebe Mitglieder!:smile:

Ich hoffe ich finde hier einen Accessprofi:wink:

Für ein Schulprojekt soll ich eine Datenbank für eine Videothek erstellen. soweit so gut.

leider bleibe ich an einem Punkt hängen:

„Die Videonummer von 1000 bis 9999 soll automatisch vergeben werden.“

Leider ist es nicht möglich den Autowert mit einer Gültigkeitsregel oder ähn. einzugrenzen.

Hat noch jemand eine andere Idee, wie ich das hinbekomme?

Dankeee!!!

Hallo,
dafür ist Access zu dumm, das geht nciht.
Alternative:
Lege eine Tabelle an mit nur einer Zeile Inhalt und den Spalten „Kreis“ und „aktNummer“
Schreibe in Kreis eine 1 und in aktNummer erstmal die 1000.

Immer wenn ein neuer Datensatz in deiner Haupttabelle angelegt wird, musst du per VBA den Wert aus aktNummer lesen, um 1 erhöhen und wieder zurückschreiben.
Dafür verwendest du zwei vba funktionen:
zum einen den „DLookup“ (findest du in der Hilfe) um den Wert für aktNummer zu lesen und
docmd.runsql um den wert um 1 zu erhöhen.
Dafür erstellst du dir eine Aktualisierungsabfrage in der Oberfläche und kopierst dir den SQL-String in den Quelltext.

Einfacher gehts nicht. Ohne VBA, keine Chance.
HTH
Proteus

Hallo,

wetten, dass ???

Erstell das Feld „Videonummer“ in der Tabelle („tblVideos“) als Zahl, Long, Index ohne Duplikate (Es darf KEIN Autowert sein!)

In einem Form mit Datenherkunft auf diese Tabelle und mit allen Feldern aus der Tabelle schreib in die Eigenschaft „Standardwert“ des Textfeldes, das die Videonummer anzeigt:

=nz(Dommax("[Videonummer]";„tblVideos“);999)+1

Warum da eine Obergrenze für die Videonummer gewünscht ist, erschließt sich mir jetzt erst mal nicht. Eine Prüfung auf die Obergrenze muß aber dann per VBA erfolgen, weil eine Gültigkeitsregel nur dann greift, wenn die Zahl von Hand eingegeben wird.

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!

Stimmt,
geht auch. Halte ich aber bei einer Multiuser-Umgebung eher für wackelig…:smile:

Gruß
Proteus

Hallo,

da hast Du wohl recht, bei der Aufgabensituation aber, denke ich mal, kommt das eher nicht im Betracht.

Wenn man MUB berücksichtigen wollte, könnte man:

–Eine Parametertabelle „in Time“ bearbeiten, soll heißen, jeweils den letzt verwendeten Wert sofort und dann aktualisieren, sobald ein neuer DS erzeugt wird. Damit könnte auch gleich der Anfangswert „custumized“ werden und müßte nicht hardcodiert sein.
(hast Du wahrscheinlich mit Deinem Vorschlag gemeint)

–Den neuen Wert für die Nummer erst dann aus der Tabelle berechnen, wenn der neue DS gespeichert werden soll (z. B. im Form_BeforeUpdate-Ereignis).

Alles in allem erfordert das dann tatsächlich ein bisschen VBA-Code… :smile:)

Genau… so ähnlich meinte ich
und ohne VBA ist acc eher schwach
Gruß
Proteus

Die halbe Miete, immerhin
Moin, Sonenschein,

Microsoft weiß, wie sich der Anfangswert eines Autowert-Feldes setzen lässt:

Ändern des Anfangswertes eines AutoWert-Feldes
heißt die Überschrift, die findest Du, wenn Du in der Access-Hilfe nach dem Stichwort „Autowert“ suchst (ist elend viel Text, zuviel um ihn hier einzustellen).

Für die Obergrenze gibt es nur die Möglichkeit, beim Ereignis „Before_Update“ den Wert abzufragen und die Übernahme abzulehnen. Meiner Meinung nach sind jedoch sowohl das Festlegen der Unter- als auch der Obergrenze wenig professionell, sowas macht man einfach nicht bei Schlüsseln. Schlimmer noch: Ich zeige meinen Anwendern solche Schlüssel erst gar nicht.

Gruß Ralf