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:
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:
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:
Sub VorEnde (Source As NotesUIdocument, Continue As Variant, doc As NotesDocument)
Dim meldung As String
'Prüfung ob eine Teilenummer eingegeben wurde (Start Workflow)
If doc.wfAlias(0)="StartRequest" Then
If doc.txtNummer(0) ="" Then
meldung = |Bitte geben Sie eine 12-stellige Teilenummer ein.|
Msgbox meldung,0,"Information"
Call Source.gotoField("txtNummer")
Continue = False
Exit Sub
End If
End If
'Prüfung ob eine Teilenummer und ein KA-Status eingegeben wurde (Planer)
If doc.wfAlias(0)="CreateCalc"Then
If doc.txtNummer(0) ="" Then
meldung = |Bitte geben Sie eine 12-stellige Teilenummer ein.|
Msgbox meldung,0,"Information"
Call Source.gotoField("txtNummer")
Continue = False
Exit Sub
End If
End If
If doc.wfAlias(0)="CreateCalc"Then
If doc.txtKastatus(0) ="" Then
meldung = |Bitte geben Sie einen KA-Status ein.|
Msgbox meldung,0,"Information"
Call Source.gotoField("txtKastatus")
Continue = False
Exit Sub
End If
End If
'Prüfung ob Kern im Gußteil enthalten ist
If doc.wfAlias(0)="CheckModel" Then
If doc.txtKern(0) ="" Then
meldung = |Bitte wählen Sie aus, ob das Teil einen Kern besitzt.|
Msgbox meldung,0,"Information"
Call Source.gotoField("txtKern")
Continue = False
Exit Sub
End If
End If
'Prüfen ob die Unterscheidung zwischen Intern und Extern getroffen wurde
If doc.wfAlias(0)="CheckGießerei" Then
If doc.txtIntern(0) ="" Then
meldung = |Bitte wählen Sie aus, ob das ein Internes oder Externes Teil ist.|
Msgbox meldung,0,"Information"
Call Source.gotoField("txtIntern")
Continue = False
Exit Sub
End If
End If
'Begründung warum eine Rückfrage eingeleitet wurde
If doc.txtApprobation(0) ="2" Then
If doc.wfComment(0) ="" Then
meldung = |Bitte geben Sie eine Begründung für Ihre Rückfrage ein!|
Msgbox meldung,0,"Information"
Call Source.gotoField("wfComment")
Continue = False
Exit Sub
End If
End If
'Prüfung ob der Bearbeiter eine Entscheidung getroffen hat
If Not doc.wfAlias(0)="StartRequest"Then
If Not doc.wfAlias(0)="Notice" Then
If Not doc.wfAlias(0)="CheckUp" Then
If Not doc.wfAlias(0)="CreateCalc" Then
If doc.txtApprobation(0) ="" Then
meldung = |Bitte treffen Sie eine Entscheidung!|
Msgbox meldung,0,"Information"
Call source.gotoField("txtApprobation")
Continue = False
Exit Sub
End If
End If
End If
End If
End If
Call Source.close
End Sub
Alles anzeigen