Hallo zusammen,
zu meinem Problemchen.
Ich importiere in eine Datenbank eine CSV Datei und befülle anschließend bestimmte Felder der neu erstellten Dokumente (nennen wir diese mal Statistikakten) automatisch, mit Feldern aus bereits vorhandenen Dokumenten (nennen wir mal Kundenakten) in der gleichen Datenbank. Geht so: Das Script sucht in einer Ansicht ein Schlüsselwort und befüllt hier aus und erstellt ein neues Dokument. Das funktioniert ohne Probleme.
Nun versuche ich verzweifelt in dieses Import-Script eine weitere Befüllung der neu erstellten Dokumente aus einem anderen, ebenfalls bereits vorhandenen Dokument (nennen wir mal Konditionen A, B C, d.h. es gibt 3 verschiedene Dokumente mit jeweils 5 Feldern) Felder zu befüllen. Ich möchte nun aus den Konditionen in diese Statistikakten Felder befüllt haben, welche er sich anhand einer Zuordnungsnummer von A, B oder C holt. Ich habe hierzu den oberen "Befüllungsteil" nach unten kopiert. Hoffentlich geht das..
Es erscheint immer wieder "Object variable not set". Der Debugger bleibt an einer Stelle stehen woraus ich auch nicht schlau werde. Ich habe eine Ansicht mit den Konditionen, Spalten sind sortiert.
Ist hier mit einem kleinen Eingriff etwas getan? Danke für Eure Hilfe.
Option Public
Option Declare
Sub Initialize
Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim fileNum As Integer
Dim spalten As Integer
Dim fileName As String
Dim InputStr As String, delimiter As String
Dim FieldArray As Variant
Dim i As Integer
Dim maske As String
Dim dclTxtDaten As NotesDocumentCollection
Dim TID As String
Dim TX As String
Dim uidoc As NotesUIDocument
Dim ws As New NotesuiWorkspace
Set db = session.Currentdatabase
If db.IsOpen Then Set dclTxtDaten = db.CreateDocumentCollection
fileNum% = FreeFile()
fileName$ = "y:\importstt.csv" '-- Dateiname eingeben
delimiter = ";" '-- Trenner eingeben
spalten = 20 '-- Spalten eingeben
maske = "ImportStatistik" '-- Maskenname eingeben
'Feldnamen eingeben
Dim varFeld(1 To 2) As Variant
varFeld(1) = "Kundenid"
varFeld(2) = "Ultimo"
Open fileName$ For Input As fileNum%
Do While Not EOF(fileNum%)
Set doc = db.Createdocument()
Call doc.Replaceitemvalue("Form", maske)
Line Input #1, InputStr$
For i = 1 To UBound(varFeld)
Call doc.Replaceitemvalue(varFeld(i), (StrToken(InputStr$, delimiter, i)))
Next
Call doc.Save(True,False)
'Transaktionsdokument der Collection zuordnen
Call dclTxtDaten.Adddocument(doc)
Loop
Close fileNum%
Dim docTxt As NotesDocument
Dim docHaupt As NotesDocument
Dim viewTID As NotesView
Set viewTID = db.Getview("viewTID")
Set docTxt = dclTxtDaten.Getfirstdocument()
While Not docTxt Is Nothing
TID = docTxt.Getitemvalue("Kundenid")(0)
Set docHaupt = viewTID.Getdocumentbykey(TID, True)
Call docTxt.Replaceitemvalue("Kundenid", docHaupt.Getitemvalue("Kundenid")(0))
Set uidoc = ws.EditDocument(True , docTxt)
uidoc.Refresh
Call uidoc.Save()
Call uidoc.Close(True)
'Call docTxt.save(True,False)
Set docTxt = dclTxtDaten.Getnextdocument(docTxt)
Wend
Dim docTxt1 As NotesDocument
Dim docHaupt1 As NotesDocument
Dim viewTX1 As NotesView
Set viewTX1 = db.Getview("viewTX")
Set docTxt1 = dclTxtDaten1.Getfirstdocument()
While Not docTxt1 Is Nothing
TX = docTxt1.Getitemvalue("txartnr")(0)
Set docHaupt1 = viewTX1.Getdocumentbykey(TX, True)
Call docTxt1.Replaceitemvalue("tx1vk", docHaupt1.Getitemvalue("tx1vk")(0))
Set uidoc = ws.EditDocument(True , docTxt)
uidoc.Refresh
Call uidoc.Save()
Call uidoc.Close(True)
'Call docTxt1.save(True,False)
Set docTxt1 = dclTxtDaten1.Getnextdocument(docTxt1)
Wend
End Sub