Diese Formel habe ich in das Nummern Feld direkt geschrieben.
var := @If(@IsNewDoc;@GetProfileField("DBProfile"; "Nr");@Return(Nr));
Nr :=@TextToNumber(var);
@SetProfileField("DBProfile"; "Nr"; @Text (nr+1) ) ;
var
Ausserdem habe ich einen Agenten der jede Nacht läuft und doppelte Nr beseitigt, dies hat zur folge das ab und zu bei replizierungen die nummern verschoben werden, das habe ich dann in einem Protokoll mitgeschrieben, so dass sich keiner wundert.
Agent:
Sub Initialize
Dim s As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim doc As NotesDocument
Dim vordoc As NotesDocument
Dim profdoc As NotesDocument
Dim Number As Variant
Dim NrVor As Variant
Dim NewNumber As Integer
Dim NewNumberText As String
Dim LastNrText As String
Dim LastNr As Integer
Dim Item As NotesItem
Set db = s.CurrentDatabase
crlf$ = Chr(13) & Chr(10)
Set view=db.GetView("ATNumberLookup")
'doc mit der höchsten ATNummer suchen
Set doc = view.GetLastDocument
Set profdoc = db.GetProfileDocument("DBProfile")
' und diese dann in das profildoc schreiben
LastNr = Cint(doc.Nr(0) )
LastNr = LastNr +1
LastNrText = Cstr(LastNr)
Set Item = profdoc.ReplaceItemValue( "Nr" , LastNrText)
' Start der doppelten ATNummern suche
Set doc= View.GetFirstDocument
NrVor = doc.getitemvalue("Nr")
Set doc=View.GetNextdocument(doc)
While Not doc Is Nothing
Number = doc.getitemvalue("Nr")
If Number(0) = NrVor(0) Then
numberold$ = Number(0)
NumberProf =profdoc.getitemvalue("Nr")
numbernew$ = NumberProf(0)
doc.Nr = NumberProf(0)
'Ab hier die benachrichtigungen in der Historie
Set Item= doc.GetFirstItem("EditDates")
Call item.AppendToTextList(" Am " + Date$ + ", um " + Time$ + " Uhr")
Call doc.ReplaceItemValue("EditDates", item)
Set Item= doc.GetFirstItem("EditDescriptions")
Call item.AppendToTextList(" Nummer von " + numberold$ + " auf " + numbernew$ + " geändert")
Call doc.ReplaceItemValue("EditDescriptions", item)
Set Item= doc.GetFirstItem("Bearbeiter")
Call item.AppendToTextList(" Agent" )
Call doc.ReplaceItemValue("Bearbeiter", item)
NewNumber = Cint(NumberProf(0))
NewNumber = NewNumber +1
NewNumberText = Cstr(NewNumber)
Set Item = profdoc.ReplaceItemValue( "Nr" , NewNumberText)
Call doc.Save( True, False,True )
Call profdoc.Save( True, False,True )
Call view.refresh
Set doc=View.GetNextdocument(vorDoc)
Else
Set vordoc = doc
NrVor = doc.getitemvalue("Nr")
Set doc=View.GetNextdocument(Doc)
End If
Wend
End Sub
Der Code ist einer der ersten die ich geschrieben habe, also nicht über den merkwürdigen Stil wundern.