Autor Thema: Ausdrucke kommen nicht in der richtigen Reihenfolge  (Gelesen 2341 mal)

Offline iukhdh

  • Senior Mitglied
  • ****
  • Beiträge: 498
  • Geschlecht: Männlich
  • To be or notes to be, this is the question
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:


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
Thomas von der IuK

klaussal

  • Gast
Re: Ausdrucke kommen nicht in der richtigen Reihenfolge
« Antwort #1 am: 06.06.08 - 12:07:44 »
Stehen die Docs in der Collection denn sortiert drin ?

Offline iukhdh

  • Senior Mitglied
  • ****
  • Beiträge: 498
  • Geschlecht: Männlich
  • To be or notes to be, this is the question
Re: Ausdrucke kommen nicht in der richtigen Reihenfolge
« Antwort #2 am: 06.06.08 - 12:32:21 »
Gute Frage :-)

Nein, im Ernst, das ist natürlich ein Ansatz, den ich dann mal angehen muss.

ABER:

Trotzdem müssten doch bei den Dokumenten dann immer Anschreiben und Berechnungsblatt ein und des selben Mitarbeiters hintereinander kommen, oder?
Thomas von der IuK

Offline Johnson

  • Senior Mitglied
  • ****
  • Beiträge: 258
  • Geschlecht: Männlich
Re: Ausdrucke kommen nicht in der richtigen Reihenfolge
« Antwort #3 am: 06.06.08 - 14:07:59 »
Das habe ich bei der Programmierung der LetterEngine auch festgestellt.

Die Dokument in der Collection sind immer nach dem Erstelldatum sortiert. Auch wenn man über die Ansicht die Dokument auswählt.

Probier mal das hier (Performace ist allerdings nicht so toll):

Zitat
Function SortDocumentCollection (coll As NotesDocumentCollection, ViewName As String) As NotesDocumentCollection
'This function takes a NotesdocumentCollection and sorts in the same order as the specified view.
'It actually creates a new collection by navigating through the view and adding documents
'as it encounter them in the NotesViewEntryCollection
   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim view As NotesView
   Dim entry As NotesViewEntry
   Dim vc As NotesViewEntryCollection
   Dim SortedColl As NotesDocumentCollection
   Dim doc As NotesDocument
   Set db = session.CurrentDatabase
   Set view = db.GetView(ViewName)
   Set vc = view.AllEntries
'initialise the new collection - trick is to create an empty collection because the collection needs to be initialized before we can add documents into it
   Set SortedColl = view.GetAllDocumentsByKey("zzxxzz")
'scan AllEntries
   Set entry = vc.GetFirstEntry
   While Not entry Is Nothing
'get a document from AllEntries and add it to the new collection
      Set doc = coll.GetDocument(entry.Document)
      Call SortedColl.AddDocument(doc)
      Set entry = vc.GetNextEntry(entry)
   Wend
'return the new collection
   Set SortDocumentCollection = SortedColl
End Function
Gruß
Johnson

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Ausdrucke kommen nicht in der richtigen Reihenfolge
« Antwort #4 am: 06.06.08 - 15:42:14 »
... es liegt mit Sicherheit bei der Sortierung der Collection - die ist wie vermutet nach Erstellungdatum.

Je nachdem wieviele Dokumente selektiert werden, kann man über @Sort auch eine Sortierung erreichen. Dazu muß man sich aus den Dokumenten einen sortierbaren String generieren und in ein Array schreiben. Über ein temporäres Dokument schreibt man das Array in ein Feld und sortiert die Werte dann mit

docTemp.tempFeldname = Evaluate( "@Sort(tempFeldname)" , docTemp )...

Das Limit an Dokumenten liegt dann im Integer-Bereich...

Toni
Grüßle Toni :)

Offline iukhdh

  • Senior Mitglied
  • ****
  • Beiträge: 498
  • Geschlecht: Männlich
  • To be or notes to be, this is the question
Re: Ausdrucke kommen nicht in der richtigen Reihenfolge
« Antwort #5 am: 06.06.08 - 23:33:43 »
Hmm,

ich komme nun erst nächste Woche dazu da mal zu testen, aber so ganz leuchtet mir das nicht ein.

Mag ja sein dass die Dokumente nicht sortiert sind, dann hab ich halt anstatt der Dokumente ABCD halt ACDB in meiner Collection.

ABER ich arbeite doch diese dann der Reihe nach ab und erstelle pro Dokument 2 Papierausdrucke. Dann müsste ich doch in meinem Beispiel anstatt der Ausdrucke AABBCCDD halt AACCDDBB ausgedruckt bekommen. Also immer die beiden zusammengehörenden hintereinander.

Ich bekomme aber z.B.  AABCCBDD, die beiden zusammengehörenden Ausdrucke also nicht nacheinander, sondern getrennt durch den Ausdruck, der zu einem anderen Dokument gehört.

Und das kapiere ich einfach nicht.

Schau doch oben im Code, ich komme zuerst zu 'Dokument ausdrucken, dann zu 'Berechnungsblatt drucken, ohne schon das nächste Dokument ausgewählt zu haben.

Gute Nacht,

Thomas
Thomas von der IuK

Offline ata

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
Re: Ausdrucke kommen nicht in der richtigen Reihenfolge
« Antwort #6 am: 09.06.08 - 08:19:23 »
... du hast das etwas umständlich beschrieben - und ich habe den Code zudem nicht gründlich genug gelesen - etwas weniger Code hätte auch schon gereicht...

Du druckst ein Dokument 2 mal hintereinander mit jeweils einer anderen Druckmaske aus. Die Collection spielt gar keine Rolle...

Die Ausdrucke sollten hintereinander aus dem Drucker marschieren - tun es aber nicht. Da scheint die Verdauung des ersten Druckauftrages den zweiten zu verharren und der dritte überholt mittlerweile...

Vielleicht klappt es, wen du eine Warteschleife einbaust - 2 Sekunden warten, bevor er zum zweiten Dokument geht...

Toni
Grüßle Toni :)

Offline iukhdh

  • Senior Mitglied
  • ****
  • Beiträge: 498
  • Geschlecht: Männlich
  • To be or notes to be, this is the question
Re: Ausdrucke kommen nicht in der richtigen Reihenfolge
« Antwort #7 am: 09.06.08 - 14:13:35 »
Sorry,

ich dachte ich habe es besonders gut erklärt, aber war wohl doch zu kompliziert und erschlagend :)

Das war ja auch meine Vermutung am Anfang, dass sich die einzelnen Druckaufträge überholen ... aber geht das wirklich? So rein technisch? Ich dachte die werden einer nach dem anderen der Reihe nach abgearbeitet ...

Ich versuchs mal mit der Warteschleife.

Ciao
Thomas
Thomas von der IuK

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz