Hallöchen,
ich möchte gerne forlaufende Nummern für neue Dokumente generieren. Habe es schon mit einem Profildokument und @GetProfileField versucht aber es klappt nicht. Gibt es noch andere Möglichkeiten mit der Formelsprache ??
ZorroZ
Hallöchen,
ich möchte gerne forlaufende Nummern für neue Dokumente generieren. Habe es schon mit einem Profildokument und @GetProfileField versucht aber es klappt nicht. Gibt es noch andere Möglichkeiten mit der Formelsprache ??
ZorroZ
zuerstmal Simpel...mit einem Profildok gehts. Aber bitte ein Userunabhängiges, sonst gehts inne Hose. Oder jedes andere beliebige normales Notesdokument welches du zentral über einen lookup suchst....
....wenn die Anwender sowieso nur Online auf einem einzigen Server arbeiten...aber dann solltest du dich fragen ob Notes nicht etwas deplaziert ist...und es eine relationale DB nicht besser tut.
DENN...
du bist dir Bewusst, dass du damit eine der wichtigsten Fähigkeiten von Notes verlierst? Nämlich die Möglichkeit der Replikation und das Offlinearbeiten mit lokalen Repliken. Denn z.b. wenn mehrere User lokal offline arbeiten, bekommen alle im ungünstigsten Fall die gleiche Nummer (was du sicher nicht willst). Da es in diesem Fall keinerlei Netzverbindungen zwischen den Usern gibt und somit keine Möglichkeit festzustellenn, ob die Nummer nicht vielleicht gerade schon von jemandem anders "gezogen" wurde.
Alternative: Um in jedem Fall eine eindeutige Nummer zu bekommen kannst du die dafür vorgesehen UNID benutzen....aber die ist nicht fortlaufend...aus gutem Grund.
Wenn es aber unbedingt eine fortlaufende Nummer sein soll und Notes nicht zu einer reinen Onlinedatenbank degeneriert werden soll....ist heftig viel Arbeit (z.B. mit einer Nummernkreisdatenbank...Temporärnummer...Hintergrundagentenabgleich e.t.c.) notwendig.
Das mit den Repliken ist schon klar. Es sollen nur einige wenige online-User darauf zugreifen. Es geht mir mehr über das WIE?
Wie kann ich mit der Formelsprache ein Feld mit einem Zahlenwert abrufen?
Scenario:
ich habe eine Profilmaske erstellt welche ein Feld mit einem Vorgabewert (z.b 1234) hat.
In einer weiteren Maske will ich dieses Feld abfragen und im Postsave den Wert in dem Profilfeld um 1 erhöhen.
Leider scheitert es schon an der Abfrage welche eigendlich mit
@GetProfileField("ProfilDoc"; "ProfilNum")
funktionieren sollte.
Was mache ich falsch ?
ZorroZ
Vielleicht gibt es das Profil "ProfilDoc" nicht?? Oder das Feld "ProfilNum"??
Oder es steht kein Wert in dem Feld
ein Blick in die Hilfe zeigt dir:
.
.
"@SetProfileField( profilename ; fieldname ; value ; uniqueKey )
value
Text. The value to which you want to set the field."
.
.
das du natürlich Text in Zahl..und nach der Incremetierung Zahl in Text umwandeln solltest....Im Profildokument solltest du ein TEXT-Feld haben.
Machs Dir doch einfacher.
Baue dir eine Ansicht in der die Dokumente absteigend sortiert sind, also letzte Nummer oben. Dann im "Query Save" diesen Code einfügen.
Dim sess As New NotesSession
Dim flag As Variant
Dim view As Notesview
Dim db As Notesdatabase
Dim doc As Notesdocument
Dim ilnr As Integer
Dim BEL_NUMMER As String
'---------------------------------------------------------------------
'------Ist es ein neues Projekt dann gibts hier die passende Projekt-NR
'---------------------------------------------------------------------
Set doc = source.document
If doc.PROJ_NR(0) = "" Then
Set db = sess.CurrentDatabase
Set view = db.GetView("LULASTPROJNR")
Set DOC = view.GetFIRSTDocument
If doc Is Nothing Then
Set doc = source.document
doc.PROJ_NR = "1"
Else
ilnr = Cint(doc.PROJ_NR(0))
Set doc = source.document
doc.PROJ_NR = Cstr(ilnr + 1) End If
Call source.Refresh
End If
Danke, funtioniert super....