Domino 9 und frühere Versionen > Entwicklung

Agent darf Datei nicht speichern

<< < (3/3)

OCS:
schade! trotzdem vielen dank! hat vieleicht ein anderer noch was?


gruß

umi:
Soweit ich das beurteilen kann liegt es an den Rechten der Dienste.
Domino wird standardmässig unter dem System Account gestartet. Dieser Account darf aber nur auf lokale Laufwerke zugreifen.

Da kannst Du im Script noch soviel probieren, Windows klemmt da ab.

Unter Win2k kannst Du den Dienst einfach auf ein entsprechendes Konto umstellen. Wie das unter NT funktioniert? keine Ahnung.

gruss

OCS:
So, ich schon wieder!!! Hab jetz mal von diversen Hilfequellen das hier zusammen... Leider krieg ich nen error an der Stelle mit dem  >:D  (Fehlerteufel) dahinter... Find aber leider den Grund nicht... Der Agent läuft immer nach neuem Maileingang auf dem Server und soll neu ankommende Mails von Ihrem Anhang befreien und diesen nach c:\reports\ ablegen:

   Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim doc As NotesDocument
   Dim dbug As NotesLog
   Dim rtitem As Variant
   Dim fileCount As Integer
   Dim it As NotesItem
   
   
   fileCount = 0
   Set dbug = New NotesLog("Router log")
   dbug.LogActions = True
   dbug.OpenAgentLog
   dbug.LogAction("begin")
   
   
   Set doc = session.documentcontext
   
   Set it = doc.GetFirstItem("Subject")  >:D
   dbug.LogAction("doc subject from context" + "-> " + it.Text)
   Set rtitem = doc.GetFirstItem( "Body" )
   If ( rtitem.Type = RICHTEXT ) Then
      Forall o In rtitem.EmbeddedObjects
         
         fileCount = fileCount + 1
         dbug.LogAction("file count:"+Cstr(fileCount))
         If o.Type = EMBED_ATTACHMENT Then
            Call o.ExtractFile( "c:\reports\newfile" & Cstr( fileCount ) )
            Call o.Remove
            
            dbug.LogAction("attachment removed")
            
            doc.stripped = "yes"
            Call doc.Save( True, True )
         End If
      End Forall
   End If
REM Finish up agent log processing
   dbug.LogAction("Mail preprocessing agent is done")
   dbug.Close



An der markierten Stelle bekomme ich Object VAriable not set...! Hab den Zugriff "    Set doc = session.documentcontext " aber vorher auch noch nirgends gesehen....! Geh also mal davon aus, dass er Doc nicht in den Zugriff bekommt! Hab ich ne andere Möglichke das zuletzt eingegangene Dokument zu bekommen??

Gruß

OCS:
ok, bin jetz nen (kleinen) Schritt weiter... mir is jetz relativ klar (glaub ich zumindest) das der Aufruf "Set doc = session.documentcontext" nur funktioniert, wenn ich den Agent von Hand aufrufe wenn ich die Hilfe richtig verstehe! Also noch mal die Frage:

Hab ich ne andere Möglichke das zuletzt eingegangene Mail-Dokument zu bekommen??


Gruß

OCS:
Hat zwar niemand geantwortet, aber trotzdem, hier die funktionierende Lösung:

On Error Goto fehler   
   Dim session As New NotesSession
   Dim view As NotesView
   Dim doc As NotesDocument
   Dim stripped As notesitem
   Dim rtitem As Variant
   Dim sViewName As String
   Dim sDestDir As String
   Dim dbug As NotesLog
   Dim sFieldName As String
   Dim sFileAttr As String
   Dim iKleinerHelfer As notesitem
   Dim sKleinerHelfer As String
   Dim sBetreff
   
   Set dbug = New NotesLog("Router log")
   dbug.LogActions = True
   dbug.OpenAgentLog
   dbug.LogAction("Verarbeitung beginnt")
   
        ' In dieser Ansicht sind die Dokumente abgelegt
        ' Das kann auch ein Ordner sein
   sViewName = "($Inbox)"
   
        ' Zielverzeichnis
   sDestDir  = "C:\reports\"
   
        ' Feldname des Richtext Feldes - Bei Mails heißt es einfach "Body"
   sFieldName = "Body"
   sBetreff = "Subject"
        ' Ansicht öffnen
   Set view = session.CurrentDatabase.getView(sViewName)
   
        ' erstes Dokument auswählen
   Set doc = view.getFirstDocument
   
   
   
        ' Solange wie in der Ansicht Dokumente zu finden sind, wird die Schleife durchlaufen
   While Not(doc Is Nothing)
      Set iKleinerHelfer = doc.getFirstItem(sBetreff)
      sKleinerHelfer = iKleinerHelfer.text
      
      If sKleinerHelfer = "EDI" Then
                ' Der Anhang ist immer in einem Richtext Feld
         Set rtitem = doc.getFirstItem(sFieldName)
         
         
         If ( rtitem.Type = RICHTEXT ) Then
                        ' Wenn kein Anhang vorhanden ist, dann nicht weitermachen
            If Not Isempty(rtitem.EmbeddedObjects) Then
               Forall o In rtitem.EmbeddedObjects
                  If ( o.Type = EMBED_ATTACHMENT ) Then
                     
                                        ' Anhang lösen
                     Call o.extractFile( sDestDir + o.Source )
                     
                                        ' Prüfen ob Datei extrahiert wurde
                     sFileAttr = Str(Getfileattr(sDestDir + o.Source))
                     If sFileAttr <> "" Then
                        dbug.LogAction("Die Datei " + o.Source +" wurde in das Verzeichnis '" + sDestDir + "' kopiert.  ")       
                     Else
                        dbug.LogAction("Fehler ! Datei konnte nicht extrahiert werden")
                        
                     End If
                     
                                        ' Anhang entfernen - zum Testen diese Zeile ausdokumentieren
                  'Call o.remove
                     
                                        ' hinterher das Dokument wieder speichern, damit die Löschung übernommen wird
                     sKleinerHelfer= sKleinerHelfer + " --> bearbeitet"
                     Call doc.Replaceitemvalue("Subject", sKleinerHelfer)
                     Call doc.save( False, True )
                  End If
               End Forall
            End If
         End If
         
                ' nächstes Dokument in der Ansicht suchen
      End If
      Set doc = view.getNextDocument(doc)
      
   Wend
   dbug.LogAction("Verarbeitung beendet")
   dbug.Close
   
   Exit Sub         
   
fehler:
   
   Messagebox "Fehler : "+Error()+" Agent - in Zeile "+Str(Erl()),16,"Fehler"
   Exit Sub         
   
   

Gruß

Navigation

[0] Themen-Index

[*] Vorherige Sete

Zur normalen Ansicht wechseln