Autor Thema: Agent arbeitet Dokumente ab - verschiebt aber nicht alle z.B. in einen Ordner  (Gelesen 3686 mal)

Offline ThomasM

  • Aktives Mitglied
  • ***
  • Beiträge: 101
  • Geschlecht: Männlich
    • Landkreis Tuttlingen
Hallo zusammen,

ich bin mittlerweille zum alle vier Jahre Programmierer verkommen.
Und sollte nun mal wieder ein kleines Progrämmle schreiben. ist mir auch soweit gelungen
nur verarbeiter der Agent (LotusScript) nicht alle Dokumente in einer bestimmten View.

Was soll erreicht werden:
- Mails gehen ein in eine Mail-in-Db
- spezielle View in welcher nur Dokumente mit einem bestimmten Betreff gelistet werden
- der Agent soll nun diese abarbeiten, ein Antwortmail senden und danach in bestimmte Ordner verschieben und als gelesen markieren

was er nicht tut:
- es waren zwei mails in der view enthalten, beide wurden abgearbeitet
- nur eines war im gesendet
- nur eines war im Ordner "Sperrmüllanmeldung benatwortet"
- beide sind im Ordner "Sperrmüllanmeldung" aber nur eines als gelesen markiert

Woran kann es liegen?

Hier ist der Code
Dim session As New NotesSession
   Dim ndb As NotesDatabase
   Dim view As NotesView
   Dim doc As NotesDocument, docMemo As NotesDocument
      
   Set ndb = session.CurrentDatabase
   Set view = ndb.GetView( "(AnfageUnBeantwortet)" )
   Set doc = view.GetFirstDocument
   Set docmemo = New NotesDocument( ndb )
      
   view.AutoUpdate = False
      
   While Not(doc Is Nothing)
      If Not doc.beantwortet(0)= "ja" Then   
      docMemo.Form = "Memo"
      docMemo.sendto = doc.from(0)
      docMemo.From = "abfallberatung@landkreis-tuttlingen.de"
      docMemo.ReplyTo = "abfallberatung@landkreis-tuttlingen.de"
      docMemo.Subject = "Ihre Sperrmuellanmeldung"
      Set nrit = New NotesRichTextItem( docMemo, "Body" )
      Call nrit.AppendText( "Wir haben Ihre Sperrmüll-Anmeldung erhalten." )
      Call nrit.AddNewLine( 2 )
      Call nrit.AppendText( "In der Woche vor der Sammlung werden Sie von der Firma Alba benachrichtigt," )
      Call nrit.AddNewLine( 1 )
      Call nrit.AppendText( "wann bei Ihnen die sperrigen Abfälle abgeholt werden." )
      Call nrit.AddNewLine( 1 )
      Call nrit.AppendText( "Die Abholung erfolgt spätestens 3 - 4 Wochen nach ihrer Anmeldung," )
      Call nrit.AddNewLine( 1 )
      Call nrit.AppendText( "kann aber je nach Tourenplanung auch schon früher erfolgen. " )
      Call nrit.AddNewLine( 2 )
      Call nrit.AppendText( "Am Abfuhrtag stellen Sie den Sperrmüll bitte bis spätestens 6.00 Uhr" )
      Call nrit.AddNewLine( 1 )
      Call nrit.AppendText( "an den Gehwegrand zur Abholung bereit." )
      Call nrit.AddNewLine( 1 )
      Call nrit.AppendText( "Holz, Elektrogeräte und Sperrmüll bitte getrennt bereitstellen. Es wird" )
      Call nrit.AddNewLine( 1 )
      Call nrit.AppendText( "mit drei Fahrzeugen gesammelt die zu unterschiedlichen Zeiten kommen." )
      Call nrit.AddNewLine( 2 )
      Call nrit.AppendText( "Wenn Sie noch Fragen haben, wenden Sie sich bitte an die Abfallberatung:" )
      Call nrit.AddNewLine( 1 )
      Call nrit.AppendText( "Tel 07461-926 6000" )
      Call nrit.AddNewLine( 1 )
      Call nrit.AppendText( "Fax 07461-926 99 6000" )
      Call nrit.AddNewLine( 1 )
      Call nrit.AppendText( "abfallberatung@landkreis-tuttlingen.de" )
      Call nrit.AddNewLine( 1 )
      Call nrit.AppendText( "www.abfall-tuttlingen.de" )
      
      Call docMemo.Save( True , False, True )   
      Call docMemo.MarkRead()
      Call docMemo.PutInFolder( "Sperrmüllanmeldung beantwortet" )
      Call docMemo.Send(True)
      
      Call doc.PutInFolder( "Sperrmüllanmeldung" )
      doc.beantwortet = "ja"
      Call doc.Save( True, False, True )
      Call doc.MarkRead()
      
      End If
      Set doc = view.GetNextDocument(doc)
      Call view.Refresh
      
      Wend


Vielen Dank schon im voraus.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Was auf den ersten Blick auffällt:
Vor der Schleife hast Du ein NotesView.AutoUpdate = False.
In der Schleife hast Du ein NotesView.Refresh.

Meinst Du nicht, dass das ein wenig gaga ist?

Bernhard

Offline ThomasM

  • Aktives Mitglied
  • ***
  • Beiträge: 101
  • Geschlecht: Männlich
    • Landkreis Tuttlingen
Hallo Bernhard,

danke für die schnelle Antwort.

ja, wahrscheinlich ist es gaga!
Den refresh hab ich vorher eingebaut um nen versuch zu starten dem Problem Herr zu werden.

Thomas

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Dim session As New NotesSession
   Dim ndb As NotesDatabase
   Dim view As NotesView
   Dim doc As NotesDocument, docMemo As NotesDocument
     
   Set ndb = session.CurrentDatabase
   Set view = ndb.GetView( "(AnfageUnBeantwortet)" )
   Set doc = view.GetFirstDocument
   Set docmemo = New NotesDocument( ndb )
     
   view.AutoUpdate = False
     
   While Not(doc Is Nothing)
      If Not doc.beantwortet(0)= "ja" Then   
         Set docmemo = New NotesDocument( ndb )
         docMemo.Form = "Memo"
         ...

Damit hättest Du schon einmal die ersten beiden Fehler behoben.

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Peter, was sollte da stören (ausser, dass es auch "gaga" ist und Bewegung im RAM bedeutet)?

Thomas: Was beobachtest Du im Debugger? Ich (und sicherlich auch andere) haben derzeit schlicht keine Zeit, Deinen Fall nachzustellen. Vielleicht ist der Fehler auch offensichtlich, aber ich derblicks derzeit nicht auf Anhieb.

Bernhard

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Peter, was sollte da stören (ausser, dass es auch "gaga" ist und Bewegung im RAM bedeutet)?
Das ist ganz einfach: Thomas möchte zu jeder eingegangenen Mail eine Antwort erstellen, speichern und versenden. Bei zwei eingegangenen Mails hat er aber nur eine gespeicherte Antwort. Warum? Weil er nicht für jede Antwort ein neues Dokument erstellt, sondern immer das eine nimmt, das vor der Schleife erstellt wurde. Das wird dann sicher mehrfach versendet und gespeichert, ist aber nur einmal in der Datenbank (weil es immer ein und dasselbe Dokument ist).

Wird innerhalb der Schleife jedesmal ein neues Dokument erstellt, ist alles in Ordnung. Da ist absolut nix "gaga" dran ...

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Jo, Peter: Ich war "gaga"! Dein zweites "New" war ja neu und nicht durchgestrichen ... Du hast absolut Recht.

Sorry.

Bernhard

Offline ThomasM

  • Aktives Mitglied
  • ***
  • Beiträge: 101
  • Geschlecht: Männlich
    • Landkreis Tuttlingen
Hallo Peter und Bernhard,

erstmal vielen Dank für die Hilfe.
Es funktioniert!

Es war die Zeile mit dem docmemo wie von Peter vorgeschlagen. Super!

Ein kleines Problem hab ich jetzt noch, und zwar sollte ich jetzt die verarbeiteten
Dokumente in den jeweiligen Ordner VERSCHIEBEN also keine Kopie erstellen.
Hab das mit

Dim ws As New NotesUIWorkspace
Call ws.folder("Sperrmüllanmeldung beantwortet", True)

versucht, klappt auch beim ersten Dokument aber beim zweiten nicht.

Wie bekomme ich das elegant gelöst.

Vielen Dank im voraus.

Thomas

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Bist Du sicher, dass Du eine Kopie erstellt hast? Oder ist es nicht eher so, dass das Dokument danach in beiden Ordnern vorhanden ist?

Ich würde mit NotesDocument.PutInFolder und NotesDocument.RemoveFromFolder arbeiten.

Offline ThomasM

  • Aktives Mitglied
  • ***
  • Beiträge: 101
  • Geschlecht: Männlich
    • Landkreis Tuttlingen
Hallo Peter,

das mit dem removefromfolder hab ich total übersehen....jetzt passt es!

Vielen Dank für die Hilfe und allen ein schönes Wochenende

Thomas

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz