Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: rar am 17.05.05 - 17:27:46

Titel: Dokumente werden nicht ausgedruckt.
Beitrag von: rar am 17.05.05 - 17:27:46
Hallo!

Mir ist klar, dass Notes und Drucken nicht zusammen gehören. Was soll man aber machen, wenn es unbedingt sein muss...!?  :P

Folgendes Problem habe ich:
In einer Ansicht ist die erst Spalte kategorisiert. In dem Feld, das kategorisiert angezeigt wird, sind Mehrfachwerte erlaubt.
Wenn ich in der Ansicht mit Strg+a alle Dokumente auswähle und dann die Dokumente ausdrucke, werden nicht alle Dokumente gedruckt. (Die DB liegt auf einem Server)

Bei der Fehlersuche, bin ich draufgekommen, dass, wenn die DB lokal liegt, die Dokumente richtig gedruckt werden.

Ich habe mal eine kleine Test-DB angehängt.
In der DB sind 3 Dokumente. Das erste wird 2 mal angezeigt. Wenn ich dann alle Doks makiere sind in der Ansicht dann vier Haken. Irgendwie denkt Notes "3 Dokumente, also druck ich die ersten 3 Haken aus".
Sehr blöde Sache.

Hat jemand eine Idee, warum das so ist bzw. wie ich den Fehler beheben könnte?!

lG
-daniel
Titel: Re: Dokumente werden nicht ausgedruckt.
Beitrag von: TMC am 17.05.05 - 21:25:01
Gerade mit Deiner DB gestetet: Ist bei mir auch so:
Strg+A, dann Drucken --> es werden 2 statt 3 Dokumente gedruckt. Das letzte nicht.

Testumgebung: ND 6.5.3 Englisch, lokal

Die UnproccessedDocuments - Methode funktioniert aber korrekt, ich hab mal folgenden Code in einem View-Button getestet:

Code
Sub Click(Source As Button)
	
	On Error Goto ErrorHandler
	
	Dim session As New NotesSession
	Dim db As NotesDatabase
	Dim collection As NotesDocumentCollection
	Dim doc As NotesDocument
	
	Set db = session.CurrentDatabase
	Set collection = db.UnprocessedDocuments
	Set doc = collection.GetFirstDocument
	
	While Not(doc Is Nothing)
		Msgbox "Kategorie: " & doc.Kategorie(0) & Chr(10) & "Text: " & doc.Text(0),64, "Test"
		Set doc = collection.GetNextDocument(doc)
	Wend	
	
GoOut:
	Exit Sub
ErrorHandler:
	Msgbox "Fehler " & Err & " - " & Error$ & Chr(10) _
	& "in Zeile " & Erl, 48, "Laufzeitfehler"
	Resume GoOut
End Sub

Ist also ein Bug so wie ich das sehe.
Könntest halt mit obigem Codebeispiel einen Workaround reinbauen. Und statt der Messagebox dann:
Code
Set uidoc = uiws.EditDocument( False, doc, True)
Call uidoc.Print (1)
Call uidoc.close(True)
Titel: Re: Dokumente werden nicht ausgedruckt.
Beitrag von: rar am 18.05.05 - 09:04:11
Danke fürs nachschauen und den Tipp Matthias.  :)

Leider hilft mir das nicht so recht weiter. Ich soll nämlich die Dokumente mit einer Alternativen Maske auf einer Seite ausdrucken.
Eigentlich sollte es fein gehen.
Die Zeilen
Call uiview.Print(1, 0, 0, False, 0,"Alternative Maske", False) oder
@Command([FilePrint] ; "" ; "" ; "" ; "" ; "" ; "Alternative Maske" )
machen genau das was ich will. Bei beiden tritt aber der Bug auf.

Bei uidoc.Print habe ich aber keine Möglichkeit eine alternative Maske mitzufgeben.

lg
Titel: Re: Dokumente werden nicht ausgedruckt.
Beitrag von: Semeaphoros am 18.05.05 - 10:33:46
Doch, kannst Du, indem Du vor dem Print die alternative Maske ins Form-Feld hineinschreibst und nach dem Print wieder die ursprüngliche Maske hineinschreibst
Titel: Re: Dokumente werden nicht ausgedruckt.
Beitrag von: rar am 18.05.05 - 11:39:49
Auf die Idee bin ich nicht gekommen. Danke Jens.
Jedoch gibt es da 2 Probleme.... :-\

1.) Die es wird jede Kategorie seperat ausgedruckt. D.H. Dokumente, die 2 mal angezeigt werden, werden auch 2 mal ausgedruckt. Soll aber nicht sein.

2.) Ich muss unbedingt mehrere Dokumente auf eine Seite ausdrucken. Das geht so aber nicht.


Leider.


Hier noch ein paar Infos zu dem Ablauf und ein ev. weiterer Lösungsansatz, der aber auch nicht so richtig funktioniert:

In der DB gibt es viele Dokumente. Durch ein Klick auf ein Button werden bestimmte Doks gesucht und mit  Call coll.PutAllinFolder() in ein SPOFU Folder geschoben. Dann wird mit Call Call ws.ComposeDocument( "","", "DruckMaske") ein Dok erstellt. Im Queryopen der DruckMaske befindet sich der Code:
@Command([OpenView] ; "SPOFUFolder" ; "" ; "1" );
@Command([EditSelectAll]);
@Command([FilePrint] ; "" ; "" ; "" ; "" ; "" ; "alternativeMaske" );
@Command( [RemoveFromFolder] );
@Command([EditDeselectAll]);
@Command([FileCloseWindow])
Durch das FileCloseWindow wird der Ordner wieder geschlossen und es ist nur noch das erstellte Dok offen.
Das geht soweit. Wenn da nicht der Bug wäre.
Wie aber schon oben erwähnt werden alle Dokumente richtig ausgedruckt wenn die DB Lokal liegt. Daher dachte ich mir, dass ich den SPOFU Ordner in ein Gemeinsam, für Desktop privat bei Erstbenutzung Ordner ändere. Dadurch liegt der Ordner ja lokal am Desktop und alles sollte richtig ausgedruckt werden.
Hier kommt aber bei der Zeile Call coll.PutAllinFolder() die Fehlermeldung:
Can't move document to shared Private On First Use folder (FolderName)
Wenn ich die Doks händisch dorthin verschiebe und ausdrucke passt es. Das einzige Problem ist in dem Fall also nur noch das Call coll.PutAllinFolder(). Warum geht das nicht?  ???  :'(
Vielleicht ist das Problem so einfacher zu lösen.

lG
-daniel
Titel: Re: Dokumente werden nicht ausgedruckt.
Beitrag von: Semeaphoros am 18.05.05 - 13:39:33
Der Ordner muss existieren, er kann mit dem Call nicht neu erstellt werden. In der KB und auch hier im Forum gibt es dazu Einträge
Titel: Re: Dokumente werden nicht ausgedruckt.
Beitrag von: rar am 18.05.05 - 14:47:59
Das ist schon klar, Jens.
Mir scheint so als ob ich heute von einem Notesbug zum andern hüpfe.  :'(
Heute ist ein schlechter Tag  :P

Bei mir klappt es einfach nicht. Ich kann in Script keine Dokumente in Ordner verschieben, die Gemeinsam, für Desktop privat bei Erstbenutzung sind. Wenn der private Ordner schon existiert.
Bei Normalen SPOFUOrdnern geht es schon.

lG ein verzweifelter
-daniel




Hier der Bsp.Code, dass man die paar Zeilen nicht tippen braucht:
Dim session As New NotesSession
Dim db As NotesDatabase
Dim collection As NotesDocumentCollection
Set db = session.CurrentDatabase
Set collection = db.UnprocessedDocuments
Call collection.PutAllInFolder( "SfDPOFU" )
Titel: Re: Dokumente werden nicht ausgedruckt.
Beitrag von: TMC am 18.05.05 - 21:22:28
@Daniel: kann man hier nicht Problem 1 von Problem 2 isolieren?

Wie willst Du denn drucken? Aus der Ansicht? Oder wie danach beschrieben die gefundenen Dokumente?

Falls 2.:
Ich würde das mit LotusScript machen.
User durchsucht die DB nach irgendwelchen Kriterien. Vermutlich db.Search ???
Also z.B. Set collection = db.Search(strSearchFormula, datetime, 0)

Nun hast Du also alle relevanten Dokumente in einer NotesDocumentCollection (collection).

Nun druckst Du die Dokumente per LS.
Z.B.:
Code
Set docLoop = collection.GetFirstDocument
While Not(docLoop Is Nothing)
 docLoop.Form = "frmPrint" 'Deine Druck-Maske - bitte ohne den oben erwähnten @Formula
 Set uidocPrint = uiws.EditDocument( False, docLoop, True)
 Call uidocPrint.Print (1)
 Call uidocPrint.close
 Set docLoop = collection.GetNextDocument(docLoop)
Wend
Titel: Re: Dokumente werden nicht ausgedruckt.
Beitrag von: rar am 19.05.05 - 09:14:26
Hi Matthias.
Es stimmt schon, dass die beiden Probleme nix miteinander zu tun haben.
Das zweite Problem (PutAllInFolder bei SDPOFU) ist nur aufgetreten, weil ich verzweifelt nach einem Workaround wegen dem ersten Bug gesucht habe.

Was will ich drucken?
Ich habe eine Ansicht mit ca 300 Dokumenten. In einem Feld steht ein Username. Die Ansicht ist kategorisiert nach dem Usernamen. 120 Doks haben UserA in dem Feld stehen, bei 50 Doks steht UserB und beim Rest steht UserC.
Jetzt muss UserA seine Dokumente mit einer einer alternativen (Druck)maske ausdrucken. Um Papier zu sparen, müssen aber mehrere Doks auf einer Seite ausgedruckt werden. Es werden dann statt den 120 Seiten nur noch ca. 10 Seiten ausgedruckt.
Mit dem Call uidocPrint.Print (1) wird aber jedes Dokument auf eine eigene Seite gedruckt.

Ich glaube die einzigen Möglichkeiten, mehrere Dokumente auf eine Seite zu drucken, sind
- Call uiview.Print(1, 0, 0, False, 0,"Alternative Maske", False)
- @Command([FilePrint] ; "" ; "" ; "" ; "" ; "" ; "Alternative Maske" )

Aber damit hab ich ja die Probleme.

Die Collection befülle ich übrigens mit Set coll = view.Getalldocumentsbykey(session.UserName,True)
und verschiebe sie dann in den SPOFUOrdner, aus dem ich drucken will.


Mir ist aber grad eingefallen, dass ich die SPOFU ganz weglassen könnte und direkt aus der kategorisierten Ansicht heraus drucken kann. Ich müsste dann halt nur noch wissen wie ich mehrere Dokumente selektieren kann.

lG
-daniel in alter frische
Titel: Re: Dokumente werden nicht ausgedruckt.
Beitrag von: rar am 19.05.05 - 16:52:00
 :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :) :)
Ich habs geschafft. Jetzt funktioniert alles wie es sollte.

Vielen Dank für die Hilfen

-daniel