Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet 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
-
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
-
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
-
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)...
-
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
-
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