Hallo Forum,
da bin ich mal wieder.
Ich habe ein kleines Problem, wo mir einfach nicht klar ist woran es liegen könnte.
Ich drucke im Rahmen unserer Leistungsbewertung über Notes (Jaha ... ich weiss ...) je Mitarbeiter ein Anschreiben und ein Bewertungsblatt aus. Ich habe eine Ansicht in der ich die betroffenen Datensätze markiere und dann über einen Ansichtsbutton einen Agenten starte. Das klappt alles hervorragend, bis auf eine Kleinigkeit:
Anstatt
Anschreiben Mitarbeiter A
Berechnungsblatt Mitarbeiter A
Anschreiben Mitarbeiter B
Berechnungsblatt Mitarbeiter B
Anschreiben Mitarbeiter C
Berechnungsblatt Mitarbeiter C
Anschreiben Mitarbeiter D
Berechnungsblatt Mitarbeiter D
kommen die Ausdrucke durcheinander raus, also z.B.
Anschreiben Mitarbeiter A
Berechnungsblatt Mitarbeiter A
Anschreiben Mitarbeiter B
Berechnungsblatt Mitarbeiter C
Anschreiben Mitarbeiter D
Berechnungsblatt Mitarbeiter B
Anschreiben Mitarbeiter C
Berechnungsblatt Mitarbeiter D
Man muss die Blätter also hinterher immer noch sortieren. Woran könnte das liegen?
Ich frage im Code verschiedene Bedingungen ab und nehme dann mal dieses, mal jenes Anschreiben, danach dann immer das gleiche Berechnungsblatt.
Kann es sein, dass sich die Druckaufträge irgendwie "überholen", weil die eine oder andere Abfrage etwas länger dauert? Aber bei meinem Verständnis sollten die doch eigentlich der Reihe nach kommen, so wie die Druckbefehle vom Notes gegeben werden, oder?
Kennt jemand dieses Verhalten?
Vielen Dank und schönes Wochenende im Voraus.
Hier der Code:
Sub Initialize
Dim session As New NotesSession
Dim db As Notesdatabase
Dim collection As NotesDocumentCollection
Dim docTemp As NotesDocument
Dim docTemp2 As NotesDocument
Dim nuiw As New NotesUIWorkspace
Dim docToPrint As NotesUIDocument
'Hol die aktuelle Datenbank
Set db=session.CurrentDatabase
'Hol alle markierten Dokumente
Set collection = db.UnprocessedDocuments
'Hol das erste der Dokumente
Set docTemp = collection.GetFirstDocument
'Schleife um die markierten Dokumente der Reihe nach abzufragen
While Not (docTemp Is Nothing)
'Schonmal das nächste Dokument raussuchen
Set docTemp2 = collection.GetNextDocument(docTemp)
'Ausdruckroutine nur dann, wenn es sich um eine Eingabemaske handelt.
If docTemp.form(0)="Eingabe" Then
'Ausdruck wenn es sich um den freigestellten PRV handelt
If docTemp.Personalrat(0) ="Ja" Then
docTemp.form ="AusdruckPersonalrat"
Goto Drucken
End If
'Ausdruck wenn Mitarbeiter nix bekommt
If docTemp.Gesamtpunktzahl(0) <3.071 Then
docTemp.form ="Ausdruckbekommtnix"
Goto Drucken
End If
'Ausdruck wenn Mitarbeiter ohne Leistungszulagen was bekommt
If docTemp.Gesamtpunktzahl(0) >=3.071 And docTemp.andereLeistungszulagen(0) ="Nein" Then
docTemp.form ="Ausdruckbekommtwas"
Goto Drucken
End If
... hier fehlen dann noch 3 weitere Abfragen, die ich hier nicht aufliste ...
'Ausdruck bei allen anderen Varianten die dann fehlerhaft sein müssen
docTemp.form ="Maximalleer"
'Dokument ausdrucken
Drucken:
nuiw.EditDocument True,doctemp
Set docToPrint = nuiw.CurrentDocument
Call docToPrint.Print (1)
Call docToprint.close
' Berechnungsblatt ausdrucken
If docTemp.Personalrat(0) ="Nein" Then
docTemp.form ="Berechnungsblatt"
nuiw.EditDocument True,doctemp
Set docToPrint = nuiw.CurrentDocument
Call docToPrint.Print (1)
Call docToprint.close
End If
End If
'nächstes Dokument übergeben
Set docTemp = docTemp2
Wend
End Sub