Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: chock am 16.01.04 - 08:07:37
-
Hallo,
ich benutzte folgendes Script in einer Maildatenbank um Dokumente auf einen bestimmten Laufwerk abzulegen. Wenn ich dieses Script manuell ausführe funktioniert es ohne Probleme. Auch Debugger zeigt keine Fehler.
Ich möchte nun dieses Script periodisch (nach Eingang einer neuen Mail) laufen lassen.
Dabei kommt auf der Serverkonsole die Fehlermeldung Error Creating Product Object.
Sub Initialize
Dim session As New NotesSession
Dim view As NotesView
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim rtitem As NotesRichTextItem
Dim ws As New NotesUIWorkspace
Set db = session.CurrentDatabase
Set view = db.GetView( "($Inbox)" )
Set doc = view.GetFirstDocument
Do While Not doc Is Nothing
Set rtitem = doc.GetFirstItem( "Body" )
If doc.HasEmbedded Then
If ( rtitem.Type = RICHTEXT ) Then
Forall o In rtitem.EmbeddedObjects
If ( o.Type = EMBED_ATTACHMENT ) Then
Call o.ExtractFile ( "\\khapp01\pcr\"& o.Source )
Call doc.Save( True, True )
End If
End Forall
End If
doc.Detached = "1"
End If
Call ws.folder("PCR bearbeitet", True)
Set Doc = View.GetNextDocument(Doc)
Loop
End Sub
-
in periodischen Agents darfst du keine UI-Klassen verwenden
in deinem Fall NotesUIWorkspace.
btw: du instanziierst ein Objekt der Klasse aber du benutzt es nicht.
*edit* oh, du benutzt es ja doch. sorry hab ich übersehen. das ist nicht möglich in Agents, die auf dem Server laufen. Wer soll da schon mit welchem UI interagieren?
-
Das Zugreifen auf Attachments scheint diese Woche in Mode zu sein.
Das Skript kann übrigens noch nie ordentlich funktioniert haben,
das doc.save(true,true) kommt ein wenig früh
denn doc.Detached = "1"
wird zwar gesetzt, die Datei danach aber nicht mehr gespeichert.
Also lösche : Dim ws As New NotesUIWorkspace
und setze das das doc.save(true,true) hinter das doc.Detached = "1"
Was bedeutet : Call ws.folder("PCR bearbeitet", True) ?
Ciao
Don Pasquale
-
NotesUIWorlkspace.Folder zeigt den MoveToFolder-Dialog. Natürlich nicht auf dem Server ;D
Bernhard
-
Habe es jetzt so gelöst Dank eurer Hilfe.
Dim session As New NotesSession
Dim view As NotesView
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim rtitem As NotesRichTextItem
Dim dc As NotesDocumentCollection
Set db = session.CurrentDatabase
Set view = db.GetView( "($Inbox)" )
Set dc = db.AllDocuments
Set doc = view.GetFirstDocument
Do While Not doc Is Nothing
Set rtitem = doc.GetFirstItem( "Body" )
If doc.HasEmbedded Then
If Not doc.hasitem("Detached") Then
If ( rtitem.Type = RICHTEXT ) Then
Forall o In rtitem.EmbeddedObjects
If ( o.Type = EMBED_ATTACHMENT ) Then
Call o.ExtractFile ( "\\khapp01\pcr\"& o.Source )
Sleep 5
doc.Detached = "1"
Call doc.Save( True, True )
'Call doc.RemoveFromFolder("($Inbox)")
'Call doc.PutInFolder("PCR bearbeitet")
End If
End Forall
End If
End If
End If
If doc.hasitem("Detached") Then
Call doc.RemoveFromFolder("($Inbox)")
Call doc.PutInFolder("PCR bearbeitet")
End If
Set Doc = view.GetNextDocument(Doc)
Loop
-
Gut zu wissen - vor allem, da ja nicht alle auch die Lösung ihrer Probleme hier posten.
Ein schönes Wochenende wünscht
Bernhard