Domino 9 und frühere Versionen > ND6: Entwicklung

[LotusScript] Type Mismatch

(1/6) > >>

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