Zunächst vielen Dank für eure Antworten!
Ich versuche den kompletten Ablauf zu schildern:
Ich möchte gerne aus einem Webmaske mehrere Anhänge einfügen (z. Z. sind es vier Auswahlfelder). Dies mache ich über die folgende HTML-Befehle:
| <Input Type="file" name="%%File.1" size="35" title="Hier Datei auswählen"/> <br /> |
| <Input Type="file" name="%%File.2" size="35" title="Hier Datei auswählen"/> <br /> |
| <Input Type="file" name="%%File.3" size="35" title="Hier Datei auswählen"/> <br /> |
| <Input Type="file" name="%%File.4" size="35" title="Hier Datei auswählen"/> <br /> |
Anschließend läuft im Web-Querysave ein Agent, der die Anhänge im Dateinamen umbennen soll. Es soll ein bestimmter Suffix an jeder Datei angehängt werden.
Ich wollte zunächst gerne ausprobieren, ob es generell funktioniert, daher ist der Agent zunächst von der Komplexität auch gar nicht groß.
In dem Agenten versuchte ich zunächst zu prüfen, ob überhaupt Anhänge im Dokumente vorhanden sind. Anschließend wollte ich alle angefügten Anhänge durchgehen und prüfen. Allerdings bekomme ich den Fehler Type mismatch (13) in der Zeile ...
Forall test In form.EmbeddedObjects
| Sub Initialize |
| On Error Goto Fehler |
| Dim s As New NotesSession |
| Dim thisdb As NotesDatabase |
| Dim context As NotesDocument |
| Dim form As NotesDocument |
| |
| Set context = s.DocumentContext |
| Set thisdb = s.CurrentDatabase |
| |
| print ("Agent gestartet!") |
| |
| |
| |
| |
| Set form = convertContext2Form(context) |
| |
| |
| If form.HasEmbedded Then |
| print ("Dokument hat Anhänge") |
| Forall test In form.EmbeddedObjects |
| print (test.Name ) |
| End Forall |
| Else |
| print ("Dokument hat keine Anhänge") |
| End If |
| |
| Exit Sub |
| Fehler: |
| print ("Agent: WQS\Testanhang\" + Cstr(Getthreadinfo(1))) |
| Exit Sub |
| |
| End Sub |
Funktion: convertContext2Form(context)
| Function convertContext2Form(context As NotesDocument) As NotesDocument |
| |
| On Error Goto Fehler |
| |
| |
| |
| |
| |
| With context |
| |
| Call .ReplaceItemValue("Form", "ABUS") |
| Call .ReplaceItemValue("formid", .UniversalID) |
| Call .ReplaceItemValue("status", 1) |
| |
| Call .ReplaceItemValue("SaveOptions", "1") |
| Call .ReplaceItemValue("Created", Cstr(Now)) |
| |
| End With |
| |
| Set convertContext2Form= context |
| |
| |
| Exit Function |
| Fehler: |
| Print("Agent: (WQS)\TestAnhang\" + Cstr(Getthreadinfo(1))) |
| Exit Function |
| |
| End Function |
| |
Interessant ist auf jeden Fall, dass der Agent in die True-Verzweigung der IF-Anweisung rein springt
(If form.HasEmbedded Then), also merkt er ja, dass das Dokument Anhänge enthält....
....Als das nicht funktionierte und ich nicht weiter kam, habe ich einen weiteren Testagenten erstellt, der über das gespeicherte Dokument, das ich zuvor über das Web erstellt habe, durchgeht und prüft, ob Anhänge vorhanden sind und mir in einer Messagebox die Namen der Anhänge ausgibt.
| Sub Initialize |
| Dim s As New NotesSession |
| Dim db As NotesDatabase |
| Dim col As NotesDocumentCollection |
| Dim doc As NotesDocument |
| Dim test As Variant |
| |
| Set db = s.CurrentDatabase |
| Set col = db.UnprocessedDocuments |
| Set doc = col.GetfirstDocument |
| |
| If doc.HasEmbedded Then |
| Forall o In doc.EmbeddedObjects |
| Messagebox( o.Name ) |
| End Forall |
| Else |
| Messagebox "No embedded objects found" |
| End If |
| |
| |
| End Sub |
Das Bsp. des Scripts habe ich aus der Designer-Hilfe entnommen. Hier wird die gleiche Fehlermeldung "
Type mismatch" an gleichen Stelle ausgegeben...