Dank Dir,
es geht leider nicht darum, nur mal so'n array zu bereinigen. Jetzt, da ich das Gefühl, dass Du Dich ganz doll nett um mich kümmerst, sollst Du die ganze Wahrheit erfahren.
In einer DB aus uralten Zeiten hatten meine Kollegen die Chance alle Kundeninfos in einem Dok zusammenzutragen.
Sie hatten demnach auch ein Feld Produkt1, in welches sie alle Produkte eingetragen haben, die der Kunde von uns hat. Über die Jahre sind dort nun Einträge drin wie
"Mastercard, VISA, Software1, Software2 ,..."
In der neuen Anwendung wollen wir nun je nach Produkteigenschaft eigene Doks einsetzen, für alle Karten eines, für Software ein anderes. Natürlich holt sich jedes neue Dok auch unterschiedliche Feldwerte zusätzlich aus dem alten.
Zunächst gilt es, alle Nicht-Karten-Dokumente anzulegen:
Sub Initialize
Dim session As New NotesSession
Dim dbAlt As NotesDatabase
Dim dbNeu As NotesDatabase
Dim view As NotesView
Dim coll As NotesDocumentCollection
Dim j As Integer
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)
For j = 1 To coll.Count
Set docKundeAlt = coll.GetNthDocument(j)
'Hole die Werte aus dem alten Dokument
HKT =docKundeAlt.HKT
Produkt1 = docKundeAlt.TxtProd1
'Wenn in Produkt1 ein Produkt vorhanden ist,
If Produkt1(0) <>"" Then
'bewege dich durch alle Produkte
Forall Prod In Produkt1
If Prod ="Amexco" Then Goto Marke1
If Prod ="Diners" Then Goto Marke1
If Prod ="EUROCARD" Then Goto Marke1
If Prod ="VISA" Then Goto Marke1
'Kundendokument anlegen und Felder füllen
Set docKundeNeu = New NotesDocument(dbNeu)
docKundeNeu.Form = "Produkt"
docKundeNeu.HKT = HKT
docKundeNeu.Produkt = Prod
'Sichere das Kundendokument
Call docKundeNeu.Save(True, True)
Marke1:
End Forall
End If
Next
End Sub
OK, das mit der Sprunganweisung ist nicht schick, aber dieses Code
schnipsel erfüllt seinen Zweck.
Dein Tip mit dem Bereinigen des Array müsste ich für vier unerwünschte Kartenprodukte auch vier mal durchführen. Ich weiß, dass das auch eleganter geht. :-)
Was ich mit Erweiterung der Quellmaske meinte, war, aus diesem Feldwert soviele einzelne Felder zu machen, wie Einträge drin sind. Aber das wäre noch weniger ruhmreich.
Gruß
Paul
Viel Text?? Du wolltest es nicht anders.