Domino 9 und frühere Versionen > ND7: Entwicklung
Anhänge über die Eigenschaft EmbeddedObjects nicht möglich
Lotuseffekt:
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:
--- Code: ---<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 />
--- Ende Code ---
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
--- Code: ---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!")
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
'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
--- Ende Code ---
Funktion: convertContext2Form(context)
--- Code: ---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
--- Ende Code ---
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.
--- Code: ---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
--- Ende Code ---
Das Bsp. des Scripts habe ich aus der Designer-Hilfe entnommen. Hier wird die gleiche Fehlermeldung "Type mismatch" an gleichen Stelle ausgegeben...
Andrew Harder:
War die Noteshilfe nicht das Teil, bei welchem in R5 die @Command Befehle immer übersetzt waren mit @Befehl und die Teile bei denen man bei Lotus selbst nicht wusste für was sie sind, immer nur erschreckend kurz und immer stur gleich behandelt wurden?
;D
Kann es sein, das Du nur ein EmbeddedObject im Dokument hast?
In diesem Falle würde
--- Code: ---Forall o In doc.EmbeddedObjects
--- Ende Code ---
nicht auf ein Array zugreifen.
Ist das die Zeile bei welcher der Fehler auftritt?
Lotuseffekt:
Hallo Andrew!
Das ist die Stelle wo ich den Fehler bekomme.
Ich habe auch mit Dokumenten versucht, die mehrere Anhänge haben und trotzdem bekomme ich den Fehler. Wenn ich mir die Eigenschaften des Dokumentes anschaue, dann steht im Feld '$FILE' die Anmerkung, dass es Anhänge enthält:
Feldname: $FILE
Datentyp: Angehängtes Objekt
Datenlänge: 52 Byte
Seq.-Num.: 1
Doppeleintrags-ID: 0
Feld-Flags: ATTACH SIGN SEAL SUMMARY
Objekttyp: Datei
Objekt-ID: 0000071E
Objektlänge: 27
Dateiname: dp1730_test.txt
Flags:
Host: UNKNOWN
Komprimierungstyp: NONE
Kodierungstyp:
Dateiattribute: RW PUBLIC
Dateigröße: 27
Datei erstellt: 24.04.2008 09:42:43
Datei geändert: 24.04.2008 09:42:43
Gibt es eigentlich die Möglichkeit auf das Item "$File" zuzugreifen? Ich habe das testweise versucht, sodass ich über das RichTextItem auf die Anhänge zugreife, aber es hat leider nicht geklappt auf die $file-Item zuzugreifen.
Viele Grüße und Danke!
Navigation
[0] Themen-Index
[*] Vorherige Sete
Zur normalen Ansicht wechseln