Autor Thema: Drucken im Backend  (Gelesen 11709 mal)

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: Drucken im Backend
« Antwort #20 am: 18.10.04 - 23:31:14 »
Klingt seltsam. Darfst Du Drucken, also ist kein $KeepPrivate vorhanden?

Ich habe hier in einer App folgenden funktionierenden Code:
Code
	Dim session As New NotesSession	
	Dim db As NotesDatabase
	Dim doc As NotesDocument
	Dim uiws As New NotesUIWorkspace
	Dim uidoc As NotesUIDocument	
	Dim uidocTempPrint As NotesUIDocument	
	Set db = session.CurrentDatabase
	Set uidoc = uiws.CurrentDocument
	Set doc = uidoc.Document
	doc.Form = "DruckMaske"
	doc.~$KeepPrivate = ""
	Set uidocTempPrint = uiws.EditDocument( False, doc, True)
	Call uidocTempPrint.Print
	Call uidocTempPrint.close

Unterschied zu Deinem Code:
a) ich leere $KeepPrivate
b) Set uidocTempPrint = uiws.EditDocument( False, doc, True)  anstatt Deinem Zweizeiler
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: Drucken im Backend
« Antwort #21 am: 18.10.04 - 23:35:40 »
Nachtrag:

Danach bitte wieder "aufräumen", also zum Schluss noch ein:
doc.Form = "frmStandard"

Hintergrund: Könnte sein, dass User nach dem Printen das Dok weiterbearbeitet und speichert, und da soll natürlich dann nicht die PrintForm als Standardform verbleiben.
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Drucken im Backend
« Antwort #22 am: 18.10.04 - 23:40:28 »
Es wird an der doppelten Verwendung des uidoc liegen - kann das aber gerade nicht verifizieren.

Nimm mal folgenden einfacheren Code:

Code
Set doc = ws.CurrentDocument.Document
	
	doc.Form = "Druckmaske"
	Set uidoc = ws.EditDocument( False, doc, True)
	Call uidoc.Print (1)
	Call uidoc.close

@Matthias: Das mit dem Rücksetzen des Form-Items ist unnötig, da der Anwender keine Chance hat, das Doc zu bearbeiten - das fällt nach dem Drucken wieder zu und ist gegen das Versetzen in den EditMode durch die entsprechenden Parameter geschützt.

HTH,
Bernhard

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: Drucken im Backend
« Antwort #23 am: 18.10.04 - 23:47:10 »
@Matthias: Das mit dem Rücksetzen des Form-Items ist unnötig, da der Anwender keine Chance hat, das Doc zu bearbeiten - das fällt nach dem Drucken wieder zu und ist gegen das Versetzen in den EditMode durch die entsprechenden Parameter geschützt.

Probiere es aus Bernhard:
In dem Beispiel wird im BackendDoc, welches über das *Current* Frontend-Doc instantiiert wurde, ein Item gesetzt.
Ich würde mich schwer täuschen, würde das Setzen des Items nicht verweilen, solange das Current-UIDoc offen ist. Folgt also nach dem Print-Buthong ein Klick auf einen weiteren Buthong, der z.B. erneut das UIDoc ins Backend instantiiert und dort dann ein call NotesDocument.Save macht, dann wird die "DruckMaske" als neue Form gesetzt.

Ist mir auch schon so passiert, daher mein expliziter Hinweis darauf.
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Drucken im Backend
« Antwort #24 am: 18.10.04 - 23:53:50 »
Ich habe das Procedere mit dem Code wie oben gepostet bei mir mehrfach zu laufen. Da kommen etliche tausend Anwender zusammen. Da hätte sich schon mal wer beschwert  ;)

Wie gesagt - das uidoc fällt nach dem Drucken sofort zu. Damit entfällt auch das das Backend-Document.

Wird natürlich entweder doc oder uidoc irgendwie im Focus behalten - selbstverständlich muss dann Form wieder zurückgesetzt werden. Nicht aber im Kontext von skywook oder meinem Code.

Bernhard

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: Drucken im Backend
« Antwort #25 am: 18.10.04 - 23:59:55 »
Bernhard,
meine Bemerkung war auch auf meinen Code bezogen (da direkt darauf gefolgt und nicht auf Deinen: geht auch gar nicht: Deiner kam zeitlich später  ;D )

Nachdem ich bei mir ein 2. UIDoc instantiiere, wird das *Current* UIDoc auch NICHT geschlossen - sondern nur das 2. UIDoc. Daher verbleibt der neue Iteminhalt hier im Beispiel.

Bei Dir kann das logischerweise nicht zutreffen, da Du uidoc neu zuordnest.

Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Drucken im Backend
« Antwort #26 am: 19.10.04 - 00:04:12 »
Jo, aber auf den Fall hatte ich ja auch hingewiesen. Und genau um diesen Fall zu vermeiden, arbeite ich ja auch mit dem von mir genannten Verfahren, der selbst ein geöffnetes UIDoc nicht anfasst  ;)

Bernhard

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: Drucken im Backend
« Antwort #27 am: 19.10.04 - 00:11:47 »
Bernhard, ich habe jetzt auch Deinen Code getestet.

System: R5.0.11

Geöffnetes Dok.

1. Man betätigt diesen Button:
Code
	Dim session As New NotesSession	
	Dim db As NotesDatabase
	Dim doc As NotesDocument
	Dim uiws As New NotesUIWorkspace
	Dim uidocTempPrint As NotesUIDocument	
	Set db = session.CurrentDatabase
	Set doc = uiws.CurrentDocument.Document
	doc.Form = "frmPrint"
	Set uidocTempPrint = uiws.EditDocument( False, doc, True)
	Call uidocTempPrint.Print
	Call uidocTempPrint.close

2. Man betätigt diesen Button:
   
Code
Dim session As New NotesSession	
	Dim db As NotesDatabase
	Dim doc As NotesDocument
	Dim uiws As New NotesUIWorkspace
	Dim uidoc As NotesUIDocument	
	Dim uidocTempPrint As NotesUIDocument	
	
	Set db = session.CurrentDatabase
	Set uidoc = uiws.CurrentDocument
	Set doc = uidoc.Document
	
	doc.Subject = "HALLO WELT"
	Call doc.Save(True,True)

Problem: Es wird definitiv so die Druckmaske "frmPrint" beibehalten und gespeichert (!!!), zumindest in meiner Test-DB !
Hat mich auch gewundert, denn so unterschiedlich sind die Codes nicht auf den 2. Blick.
« Letzte Änderung: 19.10.04 - 00:16:38 von TMC »
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Drucken im Backend
« Antwort #28 am: 19.10.04 - 00:27:15 »
Matthias, das muss ich mir morgen (äh, heute) nochmal in Ruhe anschauen. Ich drücke meinen Standard-Druck-Buhtong (Doc im EditMode !), dann Strg-S - und das Form-Item bleibt unberührt.
Bin wohl zu müde heute ... Aber den Zusammenhang kriegen wir schon noch heraus ! Morgen schlage ich mir vermutlich vor die Stirn.

Bernhard

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: Drucken im Backend
« Antwort #29 am: 19.10.04 - 08:40:08 »
Streich aber vor dem Schlag die Haare zur Seite - sonst gibts Dellen in die Stirn .....  ;D
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: Drucken im Backend
« Antwort #30 am: 19.10.04 - 22:53:16 »
Streich aber vor dem Schlag die Haare zur Seite - sonst gibts Dellen in die Stirn .....  ;D
;D

Hast Du schon ein Ergebnis Deiner Tests, Bernhard? Wie gesagt, via Backend gespeichert, werden bei mir auch die zuvor via Backend gesetzten Items dann mitgespeichert. Imho eigentlich auch nur konsequent. Habe jetzt nicht getestet, wie es sich verhält wenn man das Objekt (Backend-Doc) löscht - eigentlich dürfte dann nix mehr passieren.

Matthias
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: Drucken im Backend
« Antwort #31 am: 19.10.04 - 23:09:43 »
Gerade getestet: selbst ein doc Delete bringt nix, Maske wird neu gesetzt.

Ich habe das Procedere mit dem Code wie oben gepostet bei mir mehrfach zu laufen. Da kommen etliche tausend Anwender zusammen. Da hätte sich schon mal wer beschwert ;)
Mag vielleicht auch Glück gewesen sein, dass darauf noch nie ein Script-Code mit doc.save gefolgt ist.

Ich habe mal eine Test-DB attached. Selbst ein "Delete doc" bringt nix, es wird die Form geändert beim betätigen des 2. Buttons nach dem Print (wenn Dok im Lese(!)modus)
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Drucken im Backend
« Antwort #32 am: 19.10.04 - 23:20:48 »
Hallo, Matthias (& All),

ich arbeite daran. Es ist ja wirklich so: Die Form muss eigentlich zurückgesetzt werden (unbedingt - und wenn, es schadet auf jeden Fall nix).

Momentan kann ich nicht schauen, warum mein Code so "wunderbar" funktioniert (und er ist wirklich nicht auszutricksen, siehe mein voriges Posting). Ich sehe das als äusserst peinlich (für mich). Muss mal ins QuerySave schauen oder so  ;D

Ich muss aber gerade Code von einem A****loch-Programmierer reparieren, der der Meinung war, in einer Applikation, die bekanntermassen von Portugal bis Australien läuft, einen Datumwert in einem Textfeld abzulegen. Zwischen
"19.10.2004",
"19/10/2004" und
"10/19/2004"
gibt es ja gewisse Unterschiede. Leider hat der Volltrottel darauf bei der späteren Auswertung keinerlei Rücksicht mehr genommen. Datum wird "down under" generiert und in "sverige" ausgewertet - tolles Ergebnis.
Wenn man dann noch sieht, was der Trottel dann auf seine Rechnung geschrieben hat ... Der Kunde konnte die Tretmine ja nicht ahnen !

Sowas von stinkesauer,

Bernhard

PS: Würde mich jetzt lieber um das "Wunder" des Druckbuttons kümmern. Geld ist nicht alles ... Wird noch eine lange Nacht !

Offline TMC

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.660
  • Geschlecht: Männlich
  • meden agan
Re: Drucken im Backend
« Antwort #33 am: 19.10.04 - 23:38:08 »
in einer Applikation, die bekanntermassen von Portugal bis Australien läuft, einen Datumwert in einem Textfeld abzulegen.

Stirbt Dummheit nie aus? So wie Du schreibst hat er wohl auch nur @Text(@Today) oder sowas verwendet, womit eine Zerlegung anhand z.B. 3stelligem Monatsnamen wohl auch völlig entfällt.
Viel Erfolg bei der Rekonstruktion der Daten, wenn Du Hilfe brauchst für die Vor-Ort-Rekonstruktion via Befragung der User vor Ort in Australien, dann sag Bescheid  ;D
Matthias

A good programmer is someone who looks both ways before crossing a one-way street.


Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: Drucken im Backend
« Antwort #34 am: 19.10.04 - 23:55:58 »
Das ganze AtNotes-Forum kommt auf Kosten des Kunden mit ....  ;D
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Drucken im Backend
« Antwort #35 am: 20.10.04 - 00:09:03 »
Stirbt Dummheit nie aus? So wie Du schreibst hat er wohl auch nur @Text(@Today) oder sowas verwendet, womit eine Zerlegung anhand z.B. 3stelligem Monatsnamen wohl auch völlig entfällt.
Viel Erfolg bei der Rekonstruktion der Daten, wenn Du Hilfe brauchst für die Vor-Ort-Rekonstruktion via Befragung der User vor Ort in Australien, dann sag Bescheid  ;D

Wenn es nur das wäre ... Er (nein, sie - Mehrzahl - da war eine ganze Truppe dran !) dealte mit LS und @functions immer mit dem Textfeld.
"Netter Nebeneffekt": Ohne AM / PM ist 8 Uhr 08:00:00, mit 8:00:00. Was ist jetzt kleiner als 12 Uhr ? Das wird dann in Ansichten abgefragt ...

@Semeaphoros: Wenn sich dieser Trip ergibt, bist Du dabei (und Matthias auch). Aber auf jeden Fall nicht das ganze Forum ... Nur die, die mit ihrem Herzblut unterschreiben: Ich werde immer und nur und nur und nur Datumswerte in Datumsfeldern und Zahlen in Zahlfeldern abspeichern. So, wie das in anderen Programmierspachen ja auch läuft.

Und die Anzahl der Leute, die soweit denken (kann), dürfte die Runde 'gen Australien klein werden lassen ...
Sorry, bin aber heute bös' drauf - aus berechtigtem Grunde.

Bernhard

Offline Semeaphoros

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.152
  • Geschlecht: Männlich
  • ho semeaphoros - agr.: der Notesträger
    • LIGONET GmbH
Re: Drucken im Backend
« Antwort #36 am: 20.10.04 - 00:23:15 »
Das sind ja Aussichten :)
Jens-B. Augustiny

Beratung und Unterstützung für Notes und Domino Infrastruktur und Anwendungen

Homepage: http://www.ligonet.ch

IBM Certified Advanced Application Developer - Lotus Notes and Domino 7 und 6
IBM Certified Advanced System Administrator - Lotus Notes and Domino 7 und 6

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Drucken im Backend
« Antwort #37 am: 20.10.04 - 00:42:57 »
Die in Frage kommenden losen dann: Australien, Neuseeland, Deutschland, Belgien, Portugal, Schweden (ich, ich, ich !), Finnland, Kroatien, Frankreich, Schweiz, Österreich, ...)

Bernhard

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz