Fortlaufende Nummern generieren?!

  • 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

  • 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