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.EmbeddedObjectsSub 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!")
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'Umwandeln zu einem Formular
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'verwandelt das Contextdokument zum form-Dokument
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
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...