Domino 9 und frühere Versionen > Entwicklung
erase dutt nett :-(
koehlerbv:
Warum hast Du Dich denn geärgert, Paul ?
Da Du aber einen Bezug zu einem Feld hast, bist Du sicherlich mit einem Array besser bedient. Mit R5 dort wieder Elemente 'rauszukippen, geht ggf. am einfachsten mit einem Evaluate über ein @Trim (@Replace (..)) - das erspart etliche Zeilen Code und Hilfsarrays und Redims usw.
HTH,
Bernhard
Maverick:
Machen wir es mal nicht dramatischer als es ist.
Ich kam mir mit dem Verweis auf RTFM etwas abgekanzelt vor. Andererseits ertappe ich mich selbst ab und an, einem Anwender gegenüber ähnlich zu reagieren. Hmmmm.
Vergessen !!!
Array ist nun klar. Die günstige Formelbearbeitung auch. Meine Situation ist nur die, dass ich aus einem alten Dokument je nach Produkt unterschiedliche neue Dokumente bauen muss.
OK, Formeln könnten das Splitten noch in der alten Maske machen. Da mag ich aber nicht mehr dran rumschrauben.
Ist ja auch egal, erste Tests - OHNE LISTVARIABLEN - sehen sehr gut aus.
Topic geschlossen.
Grüße
Paul
Semeaphoros:
Bernhard: Wieso Hilfsarrays und etliche Zeilen? Wenn ich mich nicht täusche, gibts den ArrayGetIndex und den Fulltrim seit R5 (das aber nur der Vollständigkeit halber)
koehlerbv:
@Paul: Ich meinte keine Erweiterung der Maske, sondern das Entfernen von nicht gewünschten Elementen in Deinem LS-Code:
BereinigtesArray = Evaluate (@Trim (@Replace (KomplettesArray; UnerwünschterWert; ""))
@Jens: So eine DeleteElement-Routine schreibt man ja sinnigerweise nicht jedes Mal neu. Daher würden es schon ein paar mehr Zeilen, wenn man das ganze professionell angeht:
ArrayGetIndex setzt immer ein Array als zu prüfende Daten voraus. Und das muss ja nicht in jeder Situation gegeben sein. Ergo sind schon mal Prüfungen angesagt. Dann kann es sein, dass mein zu bereinigendes Array nicht unbedingt Strings enthält.
Und FullTrim ist erst seit R6.0.1 (CF1 ?) bugfrei und daher für mich tabu (in solch allgemeinen Routinen).
Bernhard
Maverick:
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 Codeschnipsel 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. :)
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln