Autor Thema: Anhänge über die Eigenschaft EmbeddedObjects nicht möglich  (Gelesen 2291 mal)

Offline Lotuseffekt

  • Frischling
  • *
  • Beiträge: 34
  • Geschlecht: Männlich
Hallo!

Aus irgendwelchen Gründen funktioniert die Eigenschaft des NotesDocuments "EmbeddedObjects" bei mir nicht.
Ich habe ein Dokument, was auf jeden Fall einen Anhang enthält. Dies kann ich in den Eigenschaften des Dokuments unter %file sehen. Wenn ich versuche in meinem Script die Anhänge anzusprechen, bekomme ich über das Objekt "NotesDocument" eine Fehlermeldung "Type Mismatch".

Code
     .......
     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

An der Stelle "Forall" kommt die Fehlermeldung.
PS: Den Ausschnitt habe ich aus der Hilfe entnommen...
Hat jemand eine Idee?

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Mehr Code - diese Stelle ist so nichtssagend.
Und - so als generelle Anregung - NotesDocument.HasEmbedded funktioniert. Was offensichtlich nicht funktioniert, ist Dein Code, nicht die Methode  ;)

Bernhard

Offline ata

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
... auf welcher Zeile steht der Debugger denn?

Toni
Grüßle Toni :)

Offline Axel

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Ohne den vollständigen Code kommen wir hier nicht weiter.

Vorallem wie wurde die Variable form deklariert und initialisiert?


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline ata

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 5.092
  • Geschlecht: Männlich
  • drenaiondrufflos
    • Anton Tauscher Privat
... ich sehe auch nichts von dem "NotesDocument", über das der TypeMismatch kommen soll...

Toni
Grüßle Toni :)

Offline Lotuseffekt

  • Frischling
  • *
  • Beiträge: 34
  • Geschlecht: Männlich
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 />

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

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


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

Das Bsp. des Scripts habe ich aus der Designer-Hilfe entnommen. Hier wird die gleiche Fehlermeldung "Type mismatch" an gleichen Stelle ausgegeben...

Offline Andrew Harder

  • Senior Mitglied
  • ****
  • Beiträge: 295
  • Geschlecht: Männlich
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
nicht auf ein Array zugreifen.

Ist das die Zeile bei welcher der Fehler auftritt?

« Letzte Änderung: 24.04.08 - 09:42:14 von Andrew Harder »
Andy

Offline Lotuseffekt

  • Frischling
  • *
  • Beiträge: 34
  • Geschlecht: Männlich
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!

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz