Doppelte Dokumenterzeugung

  • Hallo zusammen,


    ich muss mich erneut an euch wenden.
    Ich bin immernoch dabei Dokumente zu erzeugen. Mein problem ist folgendes:
    Im Debugger erkenne ich, dass in der Sub LaufendeNummer alles korrekt abgearbeitet wird und auch doc.txtLNummer = neuenummer durchgeführt wird.


    In der Sub Querysave wird alles korrekt bis zum end sub durchlaufen.


    Danach startet die Sub aber wieder in der Zeile Set doc = source.document und läuft erneut durch.
    Nun ist das problem, dass in der Methode LaufendeNummer das doc cniht gespeichert wird und daher die txtLNummer nicht im doc übernommen ist, daher wird erneut eine laufende Nummer mit einem neuen Dokument erzeugt.


    Was mich nun wundert sind 2 Dinge:
    1. Wieso wird der Wert nicht ins Doc übernommen?(wenn ich doc.save mache wird es auch nicht übernommen)
    2. Wieso läuft das gerade 2x durch?


    Ich bin über eure Hinweise dankbar, auch andere Nachfragen konnten mir bisher nciht weiterhelfen, sie wundert das ebenso.


    Danke


    gruß
    Heiko


    Coding der betroffenen Methoden:


    Querysave:

    Code
    Sub Querysave(Source As Notesuidocument, Continue As Variant)	Dim doc As NotesDocument	Set doc = source.document	'Ermöglichen der temporären Sicherung	If doc.wfValidationFlag(0)<>"1" Then Exit Sub	'Verhindert das abgeschlossene Dokumente vor dem Beenden auf Fehler geprüft werden	If doc.wfStatus(0)<>"Completed" Then		Call VorEnde(Source, Continue, doc)	End If	If Not Continue Then Exit Sub	'Erzeugt eine laufende Nummer für das Dokument	If doc.wfAlias(0) ="StartRequest" Then		If doc.txtLNummer(0) ="" Then			Call LaufendeNummer (doc)		End If	End If	End Sub


    LaufendeNummer:


    Code
    Sub LaufendeNummer (doc As NotesDocument)	Dim doc2 As NotesDocument	Dim db As Notesdatabase	Dim session As New NotesSession	Dim view As NotesView	Dim num As Double	Dim note As NotesDocument	Dim neunummer As Integer	Set db = session.currentDatabase	Set view =db.getView("$LaufN")	Set note=view.getLastDocument	If Not note Is Nothing Then		num# = Val(Cstr(note.txtLNummer(0)))	Else		Set view =db.getView(".AdminSettingsView")			Set note =view.getDocumentbyKey("9")		num# = Val(Cstr(note.txtLNummer(0)))	End If	Dim LNdoc As NotesDocument	Set LNdoc = db.CreateDocument	neunummer = num +1	LNdoc.Form= "LID"	LNdoc.txtNummer = doc.txtNummer	LNdoc.txtLNummer=neunummer	LNdoc.namAuthor = session.username	LNdoc.ymdCreatedAt =Now	doc.txtLNummer = neunummer	Call LNdoc.save(False,False)End Sub


    VorEnde:


  • Dein problem wird infach sein, dass du den Wert ins Backend Dokument schreibst und beim Speichern der Wert vom Frontend Dokument übernommen wird.


    Also entweder schreibst du die laufende Nummer gleich ins Frontenddokument (Source) oder du musst noch am Ende dafür sorgen dass die Werte aus dem Backend Dokument ins Frontend Dokument übernommen werden (glaube ich müsste Methode Refresh sein)

  • taurec


    Ich habe das Problem gelöst, insofern, dass ich die Nummer über Source.SetFieldText direkt ins Frontend schreibe und refreshe.
    Der doppelte Durchlauf erfolgt immernoch.


    Danke schonmal für die Hilfe.


    grüße
    Heiko