Domino 9 und frühere Versionen > ND6: Entwicklung
[LotusScript] Type Mismatch
DaWutz:
In einem Agenten zum kopieren von Dokumenten von einer DB in einer andere bekomme ich eine Fehlermeldung "Type Mismatch".
Im Debugger kann ich nun sehen, dass das Feld das ich auslese (Categories) vom Value her Variant ist, der Wert Categories[0] aber vom Typ String. Aus dem [] schliesse ich, das das aber doch ein Array ist, oder?
Wie bringe ich ihn den nun dazu, den Wert einfach so zu splitten, wie ich das gerne hätte?
Code:
Sub Initialize
Dim session As New NotesSession
Dim SourceDB As NotesDatabase
Dim DestinationDB As NotesDatabase
Dim coll As NotesDocumentCollection
Dim docOld As NotesDocument
Dim docNew As NotesDocument
Dim counter As Integer
Dim splitPart1 As String
Dim splitPart2 As String
Set SourceDB = session.CurrentDatabase
Set DestinationDB = session.GetDatabase(SourceDB.Server,"IT\it-kb.nsf")
Set coll = SourceDB.UnprocessedDocuments
Set docOld = coll.GetFirstDocument()
counter = 0
Do While Not docOld Is Nothing
Set docNew = New NotesDocument(DestinationDB)
docNew.Form = "Documentation"
docNew.Title = docOld.Subject
docNew.CreatedBy = docOld.From
docNew.CreatedOn = docOld.Date
docNew.Content = docOld.Body
splitPart1 = Strtoken(docOld.Categories, "/", 1 , 5)
splitPart2 = Strtoken(docOld.Categories, "/", 2 , 5)
docNew.Category = splitPart1
docNew.SubCategory = splitPart2
Call docNew.Save(True,True)
Set docOld= coll.GetNextDocument(docOld)
counter = counter + 1
Loop
Msgbox( counter & " Dateien kopiert!")
End Sub
koehlerbv:
Irgendwie fehlt hier noch massgeblicher Code und die Angabe, in welcher Zeile es knallt.
Und: Wenn du "Categories [ 0]" siehst, ist es ein Array.
Bernhard
TMC:
Du schreibst leider nicht, in welcher Zeile der Fehler auftritt.
Aber StrToken (also @Word in LS) erwartet ein String.
docOld.Categories (als Kurzform von docOld.GetItemValue("Categories")) ist aber immer ein Array. Ich schätze also, dass das der Grund ist.
koehlerbv:
Matthias, Du hast wahr, und ich habe Blödsinn geschrieben (abgesehen davon, dass die Angabe der explosiven Zeile mir abging).
Bernhard
DaWutz:
Hallo zusammen,
also, die Zeile ist (natürlich) eben jene die Matthias identifiziert hat. Ich dachte meine Ausführung auf eben jenes Item würde das schon "erschlagen".
Viel mehr Code existiert in dem Agenten bis jetzt auch nicht, ausser halt den Deklarationen usw..
Das mit dem splitten habe ich nun so gelöst, das ich ihn einfach den ersten Wert des Arrays, also Categories(0), nehmen lasse.
Genau:
splitPart1 = Strtoken(docOld.Categories(0), "\", 1)
splitPart2 = Strtoken(docOld.Categories(0), "\", 2)
If splitPart2 = "" Then
splitPart2 = splitPart1
splitPart1 = "!! Kontrollieren !!"
End If
docNew.Category = splitPart1
docNew.SubCategory = splitPart2
Warum ist das aber ein Array, der da ankommt? Ich weiß nu wie´s gemacht wird, aber ich verstehe nicht, warum.
Danke auch schonmal für die wirklich prompten Antworten!!
PS:
Der nächste Böller kommt aber noch, denn ich muss ihn noch dazu bringen auch Attachments mitzuschleppen, aber das schaffe ich auch noch... ;)
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln