Domino 9 und frühere Versionen > Entwicklung

erase dutt nett :-(

<< < (2/3) > >>

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