Ich kümmere mich doch immer ganz doll nett ;) Da ich dabei auch immer meine ehrliche Meinung sage, fühlt sich nur der eine oder andere auf den Schlips getreten ;D Dem gegenüber steht meine Einsichtsfähigkeit - wenn ich mal über's Ziel hinausschiesse, sehe ich das auch gerne ein und tue dies kund.
Irgendwie stellt sich mit Deinem letzten Posting Dein Problem aber ganz anders dar. Ich versuche mal, das ganze in ein anderes Konzept zu giessen. Als Massgabe habe ich verstanden, dass aus der alten DB jedes Dokument zu einem / mehreren neuen Produkt-Doks werden soll, wobei Karten zu einem anderen Dokumenttyp als andere Produkte werden sollen.
Deinen Code habe ich mal ein wenig umgestellt. Als wichigste Änderung möchte ich neben dem Wegwurf einiger unnötiger Vars und den GOTOs auf die Vermeidung der Performance-Bremse mit NBotesDocumentCollection.GetNthDocument hinweisen (wenn da mehrere Tausend Docs enthalten sind, schlafen der Routine die Füsse ein !).
Okay, hier ist jetzt "the Chiemgau proposal":
OPTION DECLARE
Sub Intialize
Const CARDPRODUCTS = "AmexCo~~Diners~~EUROCARD~~VISA~~"
Dim session As New NotesSession
Dim dbAlt As NotesDatabase
Dim dbNeu As NotesDatabase
Dim coll As NotesDocumentCollection
Dim docKundeAlt As NotesDocument
Dim docKundeNeu As Notesdocument
Dim dateTime As New NotesDateTime ("01/01/1995")
Dim selection As String
Set dbNeu = session.CurrentDatabase
Set dbAlt = session.GetDatabase ("...","vst\ebl.nsf")
selection = |Form="Erfassung"|
Set coll = dbAlt.Search (selection, dateTime, 0)
If coll.Count = 0 Then 'Nix zu tun ...
Exit Sub
End If
Set docKundeAlt = coll.GetFirstDocument
While Not (docKundeAlt Is Nothing)
'Hole die Werte aus dem alten Dokument 'Unnötig ....
'HKT =docKundeAlt.HKT
'Produkt1 = docKundeAlt.TxtProd1
'Wenn in Produkt1 ein Produkt vorhanden ist,
If docKundeAlt.TxtProd1 (0) <> "" Then
'bewege dich durch alle Produkte
Forall Prod In docKundeAlt.TxtProd1
Select Case Instr (Ucase (CARDPRODUCTS), Ucase (Prod) & "~~")
Case 0:
'Erstelle Dein Nicht-Kartenprodukt-Dokument
'Kundendokument anlegen und Felder füllen
Set docKundeNeu = New NotesDocument (dbNeu)
docKundeNeu.Form = "Produkt"
docKundeNeu.HKT = docKundeAlt.HKT
'docKundeNeu.Produkt = docKundeAlt.TxtProd1 Ist das denn richtig ? Muss es nicht heissen:
docKundeNeu.Produkt = Prod
'Sichere das Kundendokument
Call docKundeNeu.Save(True, True)
Case Else
'Erstelle Dein Kartenprodukt-Dokument
End Select
End Forall
End If
Set docKundeAlt = coll.GetNextDocument (docKundeAlt)
Wend
Exit Sub
HTH,
Bernhard