Auch ich hatte schon (fortlaufende) Nummern
Hier ein Anwendungsprofil bei dem die Devise "wird schon nix passieren beim Überbrücken" garantiert zu einem Kurzschluss mit Funkenregen führen würde:
Mehrere sich replizierende DB's über Server in Europa, Mittelamerika und USA, eine zunehmende Anzahl an lokalen Notebook-Usern
und die Anforderung, eindeutige ID's für die Dokumente (Auditnummern - Vorgabe nach TS16949) zu vergeben.
Ich habe das mit einem Kompromiss gelöst:
- neue Audit-Dokumente können nur angelegt werden, wenn eine Verbindung zum zentralen Nummernserver besteht
- Jedes Mal, wenn ein neues Audit angelegt wird, wird dort per LS ein Dokument mit der eindeutigen Nummer (Anlegejahr & 1 höher als das letzte ...) und einem Link zum "Basisdokument" erzeugt (wäre aber mit dieser Lösung auch per simplem Hochzählen im Profile des Nummernservers denkbar, oder?)
- Ist die Verbindung nicht vorhanden, wird die Umgebungsvariable "smode" auf "Offline" gesetzt und die "Neu Anlegen" Funktion darüber per HideWhen ausgeblendet.
Die Verbindung zum zentralen Server überprüfe ich mit folgendem Code im PostOpen der Datenbank:
Sub Postopen(Source As Notesuidatabase)
Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Set db = session.CurrentDatabase
'Konfigurationsprofildokument - Name: "setup"
Set doc = db.GetProfileDocument("setup")
'Textfeld Multivalue "nServer" - Wert1: "Name des Servers"
'Textfeld Multivalue "nServer" - Wert2: "Pfad/Dateiname der Nummernserver.nsf"
nServerName=doc.nServer(0)
nServerPath=doc.nServer(1)
text1$="Hinweis"
text2$="Kann keine Verbindung zum zentralen Nummernserver " & Chr$(10) & Chr$(10) & _
"\\" & nServername &"\" & nServerPath & Chr$(10) & Chr$(10) &_
"herstellen." & Chr$(10) & "Einige Funktionen stehen nicht zur Verfügung"
Dim ndb As New NotesDatabase( nServerName, nServerPath )
' Über die Umgebungsvariable "smode" kann abgefragt werden, ob eine Verbindung besteht
If Not ndb.IsOpen Then
Msgbox text2$,48,text1$
Call session.SetEnvironmentVar("smode","Offline")
Else
Call session.SetEnvironmentVar("smode","Online")
End If
End Sub
Funktioniert jetzt seit einem guten Jahr in der Form ohne jegliche Probleme ... aber bei der IMHO völlig blödsinnigen Anforderung, bei gelöschten Doks die Nummer wieder runter zu zählen (das gäb doch keine eindeutige Identifizierbarkeit mehr? oder hab ich da was falsch verstanden?) wäre natürlich auch diese Lösung nicht praktikabel ...