Autor Thema: Druck von Dokumenten durch Agent  (Gelesen 10649 mal)

Offline braincrusha

  • Junior Mitglied
  • **
  • Beiträge: 65
  • Geschlecht: Männlich
  • Absoluter Newbie... und ich schäm mich nichtmal ;)
Druck von Dokumenten durch Agent
« am: 25.08.04 - 12:44:28 »
Also ich habe mal wieder ein Problem....

Ich würde gerne einen Agenten schreiben welcher Dokumente nach bestimmten Anforderungen durchsucht und die Dokumente die den Anforderungen entsprechen ausdruckt.

Ich habe schon einen ähnlichen Agenten. Doch dieser kopiert einfach die Feldinhalte ohne Formatierung und ohne die eingefügten Bitmaps/Bilder raus und schreibt diese in ein txt-file.... ich hätte es aber gerne so dass das Dokument so ausgedruckt wird wie es in meiner Datenbank ist?

Ist sowas möglich? Hat jemand vielleicht ein paar Anhaltspunkte wie wo ich am besten anfang?

elajen

  • Gast
Re:Druck von Dokumenten durch Agent
« Antwort #1 am: 25.08.04 - 13:25:16 »
Hallo,

soll der Agent im Background auf dem Server laufen. Ich denke mal ja, aber ich frag trotzdem.
Wenn Du im Frontend arbeitest, dann kannst Du die Dokumente im UI öffnen und per NotesUIDocument.print drucken.

Gruß von Ekki

Offline braincrusha

  • Junior Mitglied
  • **
  • Beiträge: 65
  • Geschlecht: Männlich
  • Absoluter Newbie... und ich schäm mich nichtmal ;)
Re:Druck von Dokumenten durch Agent
« Antwort #2 am: 25.08.04 - 13:39:32 »
ja er soll im Hintergrund laufen...

und ich hab was wichtiges vergessen... schickt er die Dokumente dann alle einzeln an den Drucker? Besser wäre es wenn er sie erst alle aneinanderhängt und dann zum Drucker schickt (Papier sparen und manchmal wird so ein PDF-Drucker benützt).

elajen

  • Gast
Re:Druck von Dokumenten durch Agent
« Antwort #3 am: 25.08.04 - 13:49:21 »
Hallo,

Notes selbst bietet Dir Druckfunktionen nur in den UI-Klassen. Geht also im Hintergrund-Agent nicht. Wenn Du auf Windows arbeitest, und das sicherstellen kannst, dann mußt Du wohl das Windows-Api verwenden. Da kenn ich mich allerdings nicht aus. :(

Edit: -> Was mir noch einfällt. Mach doch einen Java-Agent. Mit dem kannst Du ohne API drucken

Gruß von Ekki
« Letzte Änderung: 25.08.04 - 13:53:42 von elajen »

Offline Spalter

  • Aktives Mitglied
  • ***
  • Beiträge: 109
  • Mit der Lizenz zum Löschen!!!
Re:Druck von Dokumenten durch Agent
« Antwort #4 am: 25.08.04 - 13:57:24 »
Hallo brainchrusha,

ungefähr so:

Dim session As New NotesSession
Dim db As NotesDatabase
Dim workspace As New NotesUIWorkspace
Dim collection As NotesDocumentCollection
Dim doc As NotesDocument
Dim uiview As NotesUIView
Set db = session.CurrentDatabase
Set uiview = workspace.Currentview
Set collection = db.AllDocuments
Set doc = collection.GetFirstDocument

While Not doc Is Nothing
Call uiview.SelectDocument(doc)
Call uiview.print(1)
Set doc = collection.GetnextDocument(doc)
Wend


Gruß
Spalter 8)

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re:Druck von Dokumenten durch Agent
« Antwort #5 am: 25.08.04 - 14:07:32 »
@Spalter

Das soll ein Background-Agent werden, da sind keine UI-Klassen (Frontend-Klassen) erlaubt.


@brainchrusha

Dir wird als Lösung wohl nur die von elajen übrigbleiben.


Axel


 
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline Spalter

  • Aktives Mitglied
  • ***
  • Beiträge: 109
  • Mit der Lizenz zum Löschen!!!
Re:Druck von Dokumenten durch Agent
« Antwort #6 am: 25.08.04 - 14:14:12 »
Hallo Axel,

das mit den Ui's ist mir schon klar. Bei Java muß ich leider passen.

Gruß
Spalter  :-[

Offline braincrusha

  • Junior Mitglied
  • **
  • Beiträge: 65
  • Geschlecht: Männlich
  • Absoluter Newbie... und ich schäm mich nichtmal ;)
Re:Druck von Dokumenten durch Agent
« Antwort #7 am: 30.08.04 - 11:54:59 »
da ich bei Java auch passen muss werd ich die Lösung von Spalter benützen... ich hab jetzt noch ein bisschen dran rumgespielt damit er auch meinen Anforderungen entspricht... nur leider muss ich mal wieder irgendwo einen Fehler eingebaut haben weil immer wenn ich ihn starte hängt sich der Agent von alleine auf...

Sub Initialize
   Dim session As NotesSession
   Dim db As NotesDatabase
   Dim workspace As NotesUIWorkspace
   Dim collection As NotesDocumentCollection
   Dim coll As NotesDocumentCollection
   Dim doc As NotesDocument
   Dim uiview As NotesUIView
   Dim bis_date As Variant
   Dim von_date As Variant
   
   Set session = New NotesSession
   Set db = session.CurrentDatabase
   Set collection = db.AllDocuments
   Set doc = collection.GetFirstDocument
   
   
   von_date = Inputbox("Letze Version vom?", "Letzte Version", "31.05.2001")    
   bis_date = Inputbox("Datum der Version die ausgeliefert wird?", "Auslieferungsdatum","03.07.2001")
   
   
   Do While Not (doc Is Nothing)
      
      If (((doc.Feld1(0) = "Ja" Or doc.Feld1(0) = "1") Or _
      Not(Isempty(Feld2)))And Datevalue(von_date)<= doc.Feld3(0) And _
      doc.Feld3(0) <= Datevalue(bis_date)) Then   
         Set coll = doc.AddDocument
         Set doc = collection.GetNextDocument(doc)   
      End If
   Loop
   
   
   
   Set doc = coll.GetFirstDocument
   
   While Not doc Is Nothing
      
      Call uiview.SelectDocument(doc)
      Call uiview.print(1)
      Set doc = coll.GetnextDocument(doc)
      
   Wend
End Sub

also ich bin mal wieder mit meinem Latein am Ende... wenn ich den debugger einschalt läuft er aufjedenfall bis zur If-Schleife... ich bin mir nicht sicher aber ich glaube er läuft sie auch noch komplett durch bevor er sich dann komplett aufhängt.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Druck von Dokumenten durch Agent
« Antwort #8 am: 30.08.04 - 12:02:09 »
Ich denke, der Agent soll auf dem Server laufen ? Dann kann es sowieso nicht funktionieren, wie in diesem Thread schon beschrieben wurde.
Soll der Agent im Client ablaufen, wird dies auch nix. Ein erster kurzer Blick  zeigte schon:
Set coll = doc.AddDocument
gibt es nicht.
Und: Du holst das nächste NotesDocument der Collection in einer If-Abfrage. Wenn die If-Bedingung mal nicht stimmt: "In Ewigkeit - Amen !", sprach die Endlosschleife.

Bernhard

Offline braincrusha

  • Junior Mitglied
  • **
  • Beiträge: 65
  • Geschlecht: Männlich
  • Absoluter Newbie... und ich schäm mich nichtmal ;)
Re:Druck von Dokumenten durch Agent
« Antwort #9 am: 30.08.04 - 12:24:17 »
Ich denke, der Agent soll auf dem Server laufen ? Dann kann es sowieso nicht funktionieren, wie in diesem Thread schon beschrieben wurde.
Soll der Agent im Client ablaufen, wird dies auch nix. Ein erster kurzer Blick  zeigte schon:
Set coll = doc.AddDocument
gibt es nicht.
Und: Du holst das nächste NotesDocument der Collection in einer If-Abfrage. Wenn die If-Bedingung mal nicht stimmt: "In Ewigkeit - Amen !", sprach die Endlosschleife.

Bernhard

Also eigentlich sollte er auf dem Server laufen.. doch da dies nicht ohne erheblichem Mehraufwand funktioniert (ich kann kein Stück Java bis jetzt) habe ich mich entschlossen die Version von Spalter zu benützen.. schön wäre es zwar wenn er auf dem Server läuft ist aber nicht zwingend...

werd mich gleich nochmal reinlesen... sah für mich sehr passabel aus und der Debugger hat sich auch nicht beschwert.. aber ich schau nochmal wie man es richtig macht...

irgendwelche Ideen wie ich die Dokumente dann sortier wenn ohne If-Schleife?

elajen

  • Gast
Re:Druck von Dokumenten durch Agent
« Antwort #10 am: 30.08.04 - 13:37:16 »
Hallo,

du kannst schon sortieren mit If aber das ..getnextDocument solltest du tunlichst außerhalb vom If unterbringen. :D

Gruß von Ekki. :D

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Druck von Dokumenten durch Agent
« Antwort #11 am: 30.08.04 - 13:42:09 »
Aber was soll die NotesDocumentCollection beim Drucken helfen ?
Ausserdem ist coll nicht instantiiert, somit kann da auch nix "geadded" werden.
Weiterhin: Wo wird die NotesUIView instantiiert ?

Bernhard

Offline braincrusha

  • Junior Mitglied
  • **
  • Beiträge: 65
  • Geschlecht: Männlich
  • Absoluter Newbie... und ich schäm mich nichtmal ;)
Re:Druck von Dokumenten durch Agent
« Antwort #12 am: 31.08.04 - 11:01:12 »
Aber was soll die NotesDocumentCollection beim Drucken helfen ?
Ausserdem ist coll nicht instantiiert, somit kann da auch nix "geadded" werden.
Weiterhin: Wo wird die NotesUIView instantiiert ?

Bernhard
Also ich hab jetzt noch ein bisschen dran rumgebaut.. hab aber jetzt ne Frage... wie instantiiere ich coll dass nur die Dokumente reinkommen die ich benötige???

Ist es nicht so dass wenn ich die NotesDocumentCollection dann drucke dass alle Dokumente am Stück sind?? Wenn nicht hab ich wohl einige Beiträge hier falsch interpretiert oder jemand hat meine Beiträge falsch interpretiert.

Offline Spalter

  • Aktives Mitglied
  • ***
  • Beiträge: 109
  • Mit der Lizenz zum Löschen!!!
Re:Druck von Dokumenten durch Agent
« Antwort #13 am: 31.08.04 - 11:06:30 »
Hallo bc,

was Du brauchst ist wahrscheinlich die Search-Methode. Damit kannst Du eine Auswahl all der Dokumente treffen, die Deine Kriterien erfüllen.

Du erhälst eine Collection, die Du dann in Deinem Script weiterverarbeiten kannst.

Gruß
Spalter

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Druck von Dokumenten durch Agent
« Antwort #14 am: 31.08.04 - 11:11:43 »
NotesDocumentCollection ist Backend, das Drucken funktioniert aber nur im FrontEnd.
Statt einer Collection könntest Du einen Folder verwenden (darüber könntest Du auch gleich die Sortierung durchführen).

Bernhard

Offline braincrusha

  • Junior Mitglied
  • **
  • Beiträge: 65
  • Geschlecht: Männlich
  • Absoluter Newbie... und ich schäm mich nichtmal ;)
Re:Druck von Dokumenten durch Agent
« Antwort #15 am: 31.08.04 - 12:16:09 »
Also okay hab es jetzt wieder ein bisschen umgebaut...

Code
Sub Initialize
   Dim session As NotesSession
   Dim db As NotesDatabase
   Dim doc As NotesDocument
   Dim view As NotesView
   Dim oh_document As NotesDocument
   Dim temp As NotesDocument
   Dim bis_date As Variant
   Dim von_date As Variant
   
   Set session = New NotesSession
   Set db = session.CurrentDatabase
   Set view = db.GetView("NextAuslieferung")   
   Set oh_document = view.GetFirstDocument
   
   Call db.EnableFolder(ausliefer)
   
   
   von_date = Inputbox("Letze Version vom?", "Letzte Version", "31.05.2001")     
   bis_date = Inputbox("Datum der Version die ausgeliefert wird?", "Auslieferungsdatum","03.07.2001")
   
   
   Do While Not (doc Is Nothing)   
      Set temp = view.GetNextDocument(oh_document)
      If (((oh_document.voiAuslieferungCall(0) = "Ja" Or oh_document.voiAuslieferungCall(0) = "1") Or _
      Not(Isempty(voiInbetriebKunde)))And Datevalue(von_date)<= oh_document.voiAbgeschlossen(0) And _
      oh_document.voiAbgeschlossen(0) <= Datevalue(bis_date)) Then   
         Call oh_document.PutInFolder(ausliefer)
      End If
      Set oh_document = temp
   Loop
   
End Sub

kann ich irgendwie jetzt den ganzen Folder drucken oder muss ich mit einer Schleife durch die einzelnen Dokumente durch?? Wenn zweiteres werden die dann trotzdem aneinandergehängt?

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Druck von Dokumenten durch Agent
« Antwort #16 am: 31.08.04 - 12:32:37 »
Du kannst die Dokumente der UIView direkt drucken.

Über den Print-Parameter pageseparator% bestimmst Du, wie beim Druck verkettet wird:
0 - direkt vekettet
1 - eine Leerzeile dazwischen
2 - Seitenumbruch zwischen den Dokumenten

HTH,
Bernhard

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Druck von Dokumenten durch Agent
« Antwort #17 am: 31.08.04 - 12:39:08 »
Nachtrag: In den gegenwärtigen R6-Versionen funktioniert der PageSeparator nicht ! Siehe KBase-Doc 1105025

Das werden einige gar nicht lustig finden.

Bernhard

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re:Druck von Dokumenten durch Agent
« Antwort #18 am: 31.08.04 - 12:44:13 »
Und noch ein Nachtrag: In Deinem Code wird niemals das erste Dokument Deiner View ausgewertet, Du startest mit Dokument 2. Da müsstest Du Deine Schleife nochmal überarbeiten.

HTH,
Bernhard

Offline braincrusha

  • Junior Mitglied
  • **
  • Beiträge: 65
  • Geschlecht: Männlich
  • Absoluter Newbie... und ich schäm mich nichtmal ;)
Re:Druck von Dokumenten durch Agent
« Antwort #19 am: 31.08.04 - 12:57:20 »
Und noch ein Nachtrag: In Deinem Code wird niemals das erste Dokument Deiner View ausgewertet, Du startest mit Dokument 2. Da müsstest Du Deine Schleife nochmal überarbeiten.

HTH,
Bernhard
Bist du dir da sicher? Also rein logisch wenn ich es mir anschau müsste es eigentlich funktionieren. Ich hab zwei Dokumente eins davon ist oh_document, das andere temp. Oh_document wird auf das erste Document in der Ansicht gestellt noch vor der Schleife. Vor der If Abfrage wird Temp auf das nächste Dokument gestellt also Nummer Zwei in der Ansicht. Nach der If Abfrage wird oh_document zu temp also Nummer 2. So seh ich das aufjedenfall.

Mit R6 ist kein Problem da ich es hier nicht benutzt wird.

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz