Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Wirsing am 01.07.05 - 13:53:11

Titel: Multivaluefelder vergleichen
Beitrag von: Wirsing am 01.07.05 - 13:53:11
Hallo zusammen,

simple Frage:
Wie kann ich per LS zwei Multivaluefelder vergleichen?

Beispiel:

FeldA hat zwei Einträge
    1. "Muster"
    2. "Test"

FeldB hat die selben Einträge in der selben Reihenfolge.

Als Ergebnis benötige ich nur ein True oder False...

Geht das nur mit Forall oder hat es nicht noch eine bessere Lösung?
Die Suche hat mir hier nicht ganz das richtige Ergebnis geliefert - leider...


Grüsse

Holger
Titel: Re: Multivaluefelder vergleichen
Beitrag von: jr am 01.07.05 - 13:59:00
Hallo,

wenn die Felder identisch sein sollen, dann ganz normal mit = vergleichen.
Also FeldA = FeldB, oder FeldA = [WertA] : [WertB] : ... [WertN];

Wenn nur einer davon übereinstimmen muss, dann mit *= vergleichen.

FeldA *= [WertA] : [WertB] : ... [WertN] liefert True, wenn in Feld A einer der Werte recht gefunden wurde.

Gruß,

Joachim
Titel: Re: Multivaluefelder vergleichen
Beitrag von: koehlerbv am 01.07.05 - 14:00:26
Forall ist hier sicherlich nicht das geeignetste Verfahren. Ich mache sowas in einer Schleife von Lbound nach Ubound.
Vorher sollte man noch folgendes abgleichen:
- Datentypen
- gleiche Dimension
Unterscheiden sich die Arrays schon darin, kann man auf eine weitere Prüfung verzichten.

HTH,
Bernhard
Titel: Re: Multivaluefelder vergleichen
Beitrag von: Wirsing am 01.07.05 - 14:04:13
Hallo Joachim,

danke für Deine schnelle antwort, aber das scheint eine Formellösung zu sein, ich bräuchte aber eine Scriptlösung  :(

Mit

if doc1.FeldA = doc2.FeldB then blablabla

klappt es leider nicht (Type mismatch)...
Titel: Re: Multivaluefelder vergleichen
Beitrag von: jr am 01.07.05 - 14:16:19
Hallo,

sorry, war zu schnell. Klar, Du willst das in LS.

Nimm ein Flag und durchlaufe die einzelnen Einträge.


flag = True
If (Ubound(doc.FeldA) <> Ubound(doc.FeldB)) Then
    flag = False
Else
    For i = 0 To Ubound(doc.FeldA)
        If (doc.FeldA(i) <> doc.FeldB(i)) Then flag = False : Exit For
    Next
End If


Wenn flag True ist, dann sind die Felder gleich.

Das sollte funktionieren.



Gruß,

Joachim
Titel: Re: Multivaluefelder vergleichen
Beitrag von: Wirsing am 01.07.05 - 14:29:02
Danke nochmals für die Antworten.

Hab das Script jetzt nochmall etwas augebaut, damit es auch mit "vertauschten" Reihenfolgen umgehen kann:


If (Ubound(d1.FeldA) <> Ubound(d2.FeldB)) Then

   fgleich = False

Else

   fgleich = true
   For i = Lbound(d1.FeldA) To Ubound(d1.FeldA)

      j = Arraygetindex(d1.FeldA,d2.FeldB(i))

      If Isnull(j) Then
         fgleich = False
         Exit For
      End If

   Next

End If


Danke an Euch beide

Grüsse

Holger