In einem Maskenfeld möchte ich gerne eine einmalige fortlaufende Nummer erhalten. Gibt es eine Formel mit der dies erzeugt werden kann bzw. geprüft wird, ob diese Nummer bereits vergeben ist ???
Bin für jeden Tipp dankbar !
Hallo,
eine Möglichkeit, die einzige die ich eigentlich kenne, wäre EIN Dokument in einer versteckten Ansicht, in welchem die Nummer gespeichert und hoch gezählt wird. Über einen Agent (Lotus Script), der per Schaltfläche aktiviert wird, wird hoch gezählt und das Einfügen der laufenden Nummer in das Feld Deines Dokuments realisiert.
Das Script dazu ist nicht sooooo heftig!
Grüße.
Hallo Hermann
In einem Maskenfeld möchte ich gerne eine einmalige
fortlaufende Nummer erhalten. Gibt es eine Formel mit der dies
erzeugt werden kann bzw. geprüft wird, ob diese Nummer bereits
vergeben ist ???
Nein, eine Formel mit der geprüft wird, ob die Nummer bereits vergeben wurde gibt es nicht.
Ja, es gibt eine Möglichkeit eine eindeutigen Wert (nicht Nummer) innerhalb einer Datenbank zu erhalten (@unique).
Nein, dieser Wert ist nicht fortlaufend.
Es gibt mehrere Ansätze so was zu realisieren (in Script oder Formelsprache).
- Erzeuge ein Profil Dokument und lege in diesem Dokument ein Feld an in das du die entsprechenden Werte schreibst und jeweils wieder abrufst (Problem dabei sind eventuelle Kollisionen beim Abspeichern, wenn mehrere Personen mit der Datenbank gleichzeitig arbeiten).
- Baue eine Ansicht auf, in der die dokumente nach der fortlaufenden Nummer absteigend sortiert enthalten sind. Lese jeweils das erste Dokumen der Ansicht aus und erhöhe die gelesene Nummer um 1. Dokument anschließend sichern und du hast deine fortlaufende Nummer.
Beide genannten Möglichkeiten, und jede andere die mir oder jemand anderem noch einfallen würde haben allerdings ein paar generelle Probleme.
- Eine eindeutige Nummerierung ist nicht gewährleistet da z.B. unterschiedliche Datenbankstände auf einzelnen Rechnern dafür sorgen, das die Basisdaten in jeder situation anders sind.
- Replikationskonflikte können auftreten, wenn z.B. das Profildokument an zwei stellen gleichzeitig (im Sinne von Notes) verändert wird.
Mögliche generelle Lösungsstrategien:
- Keine fortlaufenden Nummern verwenden
- Die fortlaufenden Nummern nicht direkt beim Erstellen des Dokumentes berechnen, sondern in einem Agent der auf (exakt) einem Server läut.
- Die Nummern mit weiteren Zusatzinformationen versehen, die sie eindeutig kennzeichnen. z.B. Arbeitsumgebung und Username.
- Die Nummerierung externen Systemen mit einer Verbindung über DECS oder LEI überlassen.
- dafür sorgen, das die Datenbank nur auf einem einzigen Rechner (Server) läuft.
Zusammenfassung:
Eine rundum befriedigende Lösung gibt es für diese Problem nicht, und wird es auch nie geben, da Notes von seiner Definition als verteiltes System her nicht dafür geeignet ist.
Jede mögliche Lösung muss die entsprechenden Schwächen des Systemes in Kauf nehmen.
Bin für jeden Tipp dankbar !
HTH Thomas
Hi!
Besser noch: Eine Counter-DB zu erstellen(die dann auch nur auf einem Server liegt), die nichts weitermacht, als in einem wie u.g. Doc hochzählt.
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]