Autor Thema: Forall att In Item.EmbeddedObjects / Type mismatch  (Gelesen 2655 mal)

Offline Alois

  • Junior Mitglied
  • **
  • Beiträge: 88
  • Geschlecht: Männlich
  • Mal sehen...
Rehi

mein Script läuft jetzt aber ab und zu (ich kann der Grund nicht erkennen) läuft auf Fehler...
Code
....	
	If Not doc.HasEmbedded Then Exit Sub
	Set Item = doc.GetFirstItem("Anhang")

	If Item.Type = RICHTEXT  Then
		Forall att In Item.EmbeddedObjects
...

In dem Feld ist definitiv 1 Anhang aber ab und zu kommt die Fehlermeldung "Type mismatch" ohne weitere Kommentar.
Schon mal gehabt?

Offline tks

  • Senior Mitglied
  • ****
  • Beiträge: 425
  • Geschlecht: Männlich
  • ...für'n Fuss
Re: Forall att In Item.EmbeddedObjects / Type mismatch
« Antwort #1 am: 21.12.06 - 09:11:44 »
Schon mal im Debugger geschaut, an welcher Stelle der Fehler auftritt?

Sicher, daß der "Anhang" immer auch im Feld "Anhang" steht?

Würde mal behaupten, vorausgesetzt der Fehler tritt an der Stelle "Forall att In..." auf, daß "Anhang" keinen Anhang hat.
Thomas

*********************************
Domino 8.5.3FP6 unter W2K12
Notes 8.5.3 unter Win7
sequrIQ (watchdog & crypt)
*********************************

Offline Alois

  • Junior Mitglied
  • **
  • Beiträge: 88
  • Geschlecht: Männlich
  • Mal sehen...
Re: Forall att In Item.EmbeddedObjects / Type mismatch
« Antwort #2 am: 21.12.06 - 09:33:38 »
Ich habe eine Kopie vom Dokument gemacht, wo ein Datei im Feld Anhang steht

Wenn ich den Debugger mit F5 laufe lasse kommt die Meldung direkt auf den Zeile
Code
Forall att In Item.EmbeddedObjects

Mit F8 kein Fehler

Ich habe schon ein sleep davor eingetragen, bringt allerdings nichts  ::)


Offline tks

  • Senior Mitglied
  • ****
  • Beiträge: 425
  • Geschlecht: Männlich
  • ...für'n Fuss
Re: Forall att In Item.EmbeddedObjects / Type mismatch
« Antwort #3 am: 21.12.06 - 09:43:57 »
Bei Einzelschrittdebug kommt kein Fehler, wohl aber wenn du den Debugger durchlaufen lässt?

Seltsam. Ich glaube irgendwo hier im Forum wurde sowas schon mal behandelt.

Hmm...

Aber ohne nähere Infos zu dem gesamten Script kommen wir warhscheinlich nicht weiter.
Thomas

*********************************
Domino 8.5.3FP6 unter W2K12
Notes 8.5.3 unter Win7
sequrIQ (watchdog & crypt)
*********************************

Offline Alois

  • Junior Mitglied
  • **
  • Beiträge: 88
  • Geschlecht: Männlich
  • Mal sehen...
Re: Forall att In Item.EmbeddedObjects / Type mismatch
« Antwort #4 am: 21.12.06 - 14:40:31 »
hier mehr Info:

erste Teil lösche ich die Anhänge und füge sie wieder ein nach Hochzählen.
PKI Signatur wird gelöscht
Code

'PKI Signatur löschen
	Call doc.RemoveItem("SecSig")
	Call doc.Save( True , True ) 

'Abhängen und anhängen
	Set Item = doc.GetFirstItem("Anhang")
	
	If Item.Type = RICHTEXT  Then
		Forall att In Item.EmbeddedObjects
			If att.Type = EMBED_ATTACHMENT Then
				filepath$ = "C:\temp\" & att.Source
				Call att.ExtractFile(filepath$)
'Hochzählen				
				fileNumber = Mid(filepath$, Instr(filepath$, "-")+1, 3)
				filenumber = Right("000" + Cstr(Cint(fileNumber) +1 ),3)
				fileLeft = Left(filepath$, Instr(filepath$, "-"))
				fileRight = Right(filepath$, Len(filepath$) - Instr(filepath$, ".") + 1)
				fileNewpath = fileLeft + fileNumber + fileRight
				Name filepath$ As fileNewpath
				filepath$ = fileNewPath
				
				Call doc.RemoveItem("Anhang")
				Call doc.Save( True , True ) 
				Set rtitem = New NotesRichTextItem( doc, "Anhang" )
				Set object = rtitem.EmbedObject( EMBED_ATTACHMENT, "", filepath$ )
				Kill  filepath$ 
			End If
		End Forall
	End If
	
	rc = SigWithSecCom(doc)
...

Zweite starte ich die PKI Signature für jeden Dokument
Code
Function SigWithSecCom(doc As NotesDocument) As Integer
	
	
	Dim Item As NotesRichTextItem
	Dim Item1 As NotesRichTextItem
	Dim object As NotesEmbeddedObject
	Dim object1 As NotesEmbeddedObject
	Dim rc As Boolean
	Dim TaskID As Variant	
	Dim strCmd As String
	Dim filepath As String
	
	If Not doc.HasEmbedded Then Exit Function
	Set Item = doc.GetFirstItem("Anhang")
	
  REM Get attachments
	If item.Type = RICHTEXT Then
		Sleep 3		
		
'---> hier kommt der Fehler
		Forall o In Item.EmbeddedObjects
			If ( o.Type = EMBED_ATTACHMENT ) Then
				filepath$ = "C:\temp\" & o.Source
				Call o.ExtractFile(filepath$)
				Msgbox filepath$ & " wird signiert"
				
				
				strCmd = SecProg + " " + filepath$ 
				TaskID = Shell( strCmd, 1)
				
				Sleep 10	
				rc = True
				
				While rc = True
					Sleep 1
					rc = IsProcessRunningW2K ( "SecSigner" )      
				Wend
				
				Call doc.RemoveItem("Anhang")
				Set Item = New NotesRichTextItem( doc, "Anhang" )
				Set object = Item.EmbedObject( EMBED_ATTACHMENT, "", filepath$ )
				Kill  filepath$ 
				Set Item1 = doc.GetFirstItem("SecSig")
				Call doc.RemoveItem("SecSig")
				Set Item1 = New NotesRichTextItem( doc, "SecSig" )
				Set object1 = Item1.EmbedObject( EMBED_ATTACHMENT, "", filepath$ + ".pkcs7")
				Kill  filepath$ + ".pkcs7"
				
				Call doc.Save( True , True ) 
				
			End If
		End Forall
	End If
	SigWithSecCom = 1
End Function


komischerweise, in der Postsave läuft Notes durch ohne Fehler.
Bei wieder nehmen der Anhänge in der SicWithSecCom Function kommt es zu diese "Type mismatch" Fehler.
Wenn ich mir Item anschaue in Debuger, hat er die EmbededObjects.



Offline tks

  • Senior Mitglied
  • ****
  • Beiträge: 425
  • Geschlecht: Männlich
  • ...für'n Fuss
Re: Forall att In Item.EmbeddedObjects / Type mismatch
« Antwort #5 am: 21.12.06 - 15:27:23 »
Ich bin ehrlich. Keine Ahnung, was da schief läuft.

Das einzige was mir aufgefallen ist. Du speicherst das Dokument nachdem das Feld "Anhang" gelöscht wird. Dann erstellst Du das Feld neu, erstellst einen Anhang und machst dann weiter, ohne Dokument speichern. Vielleicht solltest Du vor Aufruf der Funktion das Dokument speichern.

Andererseits sagst Du ja, daß "Item" im Debugger EmbeddedObjects hat. Sorry ich versteh's nicht.

Allenfalls..... wie ist den Item im ersten Code-Beispiel deklariert? Das ist da nicht zu sehen. Ist Item da vom Typ Variant? In der Designer-Hilfe ist so ein Beispiel drin und das ist (RT)Item dann vom Typ Variant. Ist aber eher ein hilfloser Versuch. :-:
Thomas

*********************************
Domino 8.5.3FP6 unter W2K12
Notes 8.5.3 unter Win7
sequrIQ (watchdog & crypt)
*********************************

Offline Alois

  • Junior Mitglied
  • **
  • Beiträge: 88
  • Geschlecht: Männlich
  • Mal sehen...
Re: Forall att In Item.EmbeddedObjects / Type mismatch
« Antwort #6 am: 21.12.06 - 15:34:01 »
@tks Danke dasss du dir so viel Mühe gibst.

Ich kann nicht sagen dass du mir die Lösung gegeben hast aber du siehst es mit anmdere Augen und es insperiert mich für neue Versuche ...
Werde morgen an der Stelle weitersuchen

Offline Alois

  • Junior Mitglied
  • **
  • Beiträge: 88
  • Geschlecht: Männlich
  • Mal sehen...
Re: Forall att In Item.EmbeddedObjects / Type mismatch
« Antwort #7 am: 22.12.06 - 13:30:47 »
Also der Grund habe ich nicht gefunden  aber ein Call doc.Save( True , True ) vor den Aufruf hat geholfen!
Vielleicht kann diese Info jemandem helfen

Froh Weihnachten an alle und Besten Dank für die Hilfreiche Beiträge die ich den ganzen Jahr verfolgt habe

Bis in neuen Jahr
Alois

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz