Domino 9 und frühere Versionen > ND6: Entwicklung
Forall att In Item.EmbeddedObjects / Type mismatch
Alois:
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
...
--- Ende Code ---
In dem Feld ist definitiv 1 Anhang aber ab und zu kommt die Fehlermeldung "Type mismatch" ohne weitere Kommentar.
Schon mal gehabt?
tks:
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.
Alois:
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
--- Ende Code ---
Mit F8 kein Fehler
Ich habe schon ein sleep davor eingetragen, bringt allerdings nichts ::)
tks:
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.
Alois:
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)
...
--- Ende Code ---
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
--- Ende Code ---
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.
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln