So habe nun etwwas vollbracht,aber ich habe noch einen Fehler den ich aber nicht finde, deshalb bitte ich euch kurz um unterstützung
Dim session As NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim docNew As NotesDocument
Sub Initialize
Dim view As NotesView
Dim collection As NotesDocumentCollection
Dim varList As Variant
Dim i As Integer
Set session = New NotesSession
Set db = session.CurrentDatabase
Set view = db.GetView( "all")
Set collection = db.UnprocessedDocuments
For i = 1 To collection.Count
Set doc = collection.GetNThDocument(i)
varList = doc.list
Call newDocument
Next
End Sub
Function newDocument
Stop
Dim varList As Variant
Dim i As Integer
Dim personName As String
Dim payableDate As String
Dim kindofCost As String
Dim repeat As String
Dim amount As String
Dim once As String
Dim lifetime As String
Dim del1 As String
Dim wert As Integer
wert = Ubound(varList)
del1 = "~"
For i = 1 To wert
Set docNew = db.CreateDocument
docNew.personName = Strtoken("varList",del1,1)
docNew.payableDate = Strtoken("varList",del1,2)
docNew.kindofCost = Strtoken("varList",del1,3)
docNew.repeat = Strtoken("varList",del1,4)
docNew.amount = Strtoken("varList",del1,5)
docNew.once = Strtoken("varList",del1,6)
docNew.lifetime = Strtoken("varList",del1,7)
Next
End Function
So ich hoffe ihr könnt mir sagen warum er mir nen type mismatch alls Fehler gibt
Ad 1 der Debugger ist dein Freund. Und stellt dich genau an die Stelle wo es klemmt.
Ad 2 Error Handling ist in jeder Programmierung ein MUST HAVE keine Option.
Ad 3 Deine For Schleife ist mit V6 für den Müll, wenn du sicherstellen Kannst das die Anzahl deiner Elemente immer 7 ist.
Ad 4 Wenn du schon eine Funktion benutzt dann übergebt ihr auch den Wert für VarList.
Ad 5 Weil du keinen Wert zurückgibst kannst du genausogut auch eine Sub verwenden
sub newDocument(varList as string)
' String deswegen weil das eh text ist
Stop
Dim me_VarList As Variant
Dim i As Integer
Dim personName As String
Dim payableDate As String
Dim kindofCost As String
Dim repeat As String
Dim amount As String
Dim once As String
Dim lifetime As String
Dim del1 As String
Dim wert As Integer
me_Varlist = Split(varlist,"~")
Set docNew = db.CreateDocument
docNew.personName = me_Varlist(0)
docNew.payableDate = me_Varlist(1)
docNew.kindofCost = me_Varlist(2)
docNew.repeat = me_Varlist(3)
docNew.amount = me_Varlist(4)
docNew.once = me_Varlist(5)
docNew.lifetime = me_Varlist(6)
End sub
varlist scheint vom Typ variable-length-Array zu sein und nicht vom Lotus-Script Datentyp List.
In LotusScript gibts wirklich nicht soooo viele Datentypen. Deshalb kann man ruhig so vorsichtig mit unserem natursprachlichen Deutsch umgehen, dass man Irreführungen vermeidet. Unter List verstehe ich in LotusScript einen Datentyp der eine bestimmte Containerstruktur abbildet (eigentlich ein tree btw. dh. lotus nennt einen tree eine list. auch nicht besser). Aber egal.
An die einzelnen Elemente des Arrays kommst du am schnellsten über eine forall - Schleife ran.
forall x in dasWasDuListNennst
print x
' x über split weiterverarbeiten (s.u.)
End ForAll
Die einzelnen Elemente des Array zerschnippelst du am besten über die split-Funktion von LotusScript:
hier aus der Hilfe von Notes:
Sub Initialize
Dim ret As Variant
dim teststr as string
Dim delim As String
teststr = "This is the Connection"
delim = " "
ret = split(teststr, delim)
For x = 0 to 3
Print ret(x)
Next
End Sub
Als delim nimmst du natürlich ~
So an alle Kritiker, ich habe es. Noch keine Fehlerabfangung aber ich das kommt nun nachdem es funzt. hier der code
Function newDocument
Dim i As Integer
Dim personName As String
Dim payableDate As String
Dim kindofCost As String
Dim repeat As String
Dim amount As String
Dim once As String
Dim lifetime As String
Dim del1 As String
Dim wert As Integer
Dim value As String
wert = Ubound(varList)
del1 = "~"
For i = 0 To wert
Set docNew = db.CreateDocument
value = varList(i)
docNew.personName = Strtoken(value, del1, 1)
docNew.payableDate = Strtoken(value, del1, 2)
docNew.kindofCost = Strtoken(value, del1, 3)
docNew.repeat = Strtoken(value, del1, 4)
docNew.amount = Strtoken(value, del1, 5)
docNew.once = Strtoken(value, del1, 6)
docNew.lifetime = Strtoken(value, del1, 7)
docNew.Form = "Agent"
Call docNew.Save(True,False)
Next
End Function
... noch ein kleiner Tip zur Performance:
Set doc = collection.GetNThDocument(i)
... ist nicht gut für die Performance, wenn du viele Dokumente zum abarbeiten hast. Er wird um so langsamer, je mehr Dokumente du in der Collection hast...
Set doc = collection.GetFirstDocument
While Not doc Is Nothing
' # deine Anweisungen
Set doc = collection.GetNextDocument( doc )
Wend
... ist in diesem Fall die bessere Variante - bevor du dir diesen Weg standardisierst... ;-)
Toni