Domino 9 und frühere Versionen > Entwicklung

erase dutt nett :-(

<< < (3/3)

koehlerbv:
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":

--- Code: ---
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

--- Ende Code ---

HTH,
Bernhard

Maverick:
Autsch,

da hab ich mir beim Kniefall fast die Patella rausgefetzt.

Danke Dir, das ist die elegante Lösung, von der ich sprach.

Eigentlich hatte ich schon alles fertig. Dir zu Ehren kommt jetzt trotzdem Deine Lösung zum Tragen.

Ich bin ja gar nicht so.  ;D

Grüße
Paul

PS: Du hast Dein Arbeitsplatz echt am Chiemsee? Ihr sucht nicht gerade Leute, oder?

Navigation

[0] Themen-Index

[*] Vorherige Sete

Zur normalen Ansicht wechseln