Version 11
Find in list ({*; }Liste; Wert; Reichweite{; ZeilenArray{; *}}) Lange Ganzzahl
Parameter | Typ | Beschreibung | ||
* | * | Mit * ist Liste ein Objektname (String) | ||
Ohne * ist Liste eine Listenreferenznummer | ||||
Liste | ListeRef | String | Mit *: Objektname der Liste | ||
Ohne *: Referenznummer der Liste | ||||
Wert | String | Zu suchender Wert | ||
Reichweite | Ganzzahl | 0=Hauptliste, 1=Unterliste | ||
ZeilenArray | Array Lange Ganzzahl | Ohne 2ten *: Array mit Positionen der | ||
gefundenen Zeilen | ||||
Mit 2tem *: Array mit Referenznummer der | ||||
gefundenen Zeilen | ||||
* | * | Ohne *: Verwende Position der Zeilen | ||
Mit *: Verwende Referenznummer der Zeilen | ||||
Funktionsergebnis | Lange Ganzzahl | Ohne 2. *: Position der gefundenen Zeilen | ||
Mit 2. *: Referenznr der gefundenen Zeilen |
Beschreibung
Die Funktion Find in list gibt die Position oder Referenz der ersten Zeile in der Liste zurück, die dem in Wert übergebenen String entspricht. Werden mehrere Zeilen gefunden, kann die Funktion auch ein Array ZeilenArray mit der Position oder Referenz jeder Zeile füllen.
Übergeben Sie den ersten optionalen Parameter *, ist der Parameter Liste der Objektname (String) der Darstellung der Liste im Formular. Geben Sie diesen Parameter nicht an, ist Liste die Referenznummer einer hierarchischen Liste (ListeRef). Verwenden Sie nur eine einzige Darstellung der Liste oder arbeiten mit Referenznummern für Einträge (der zweite * ist nicht übergeben), können Sie beide Arten verwenden.
Verwenden Sie dagegen mehrere Darstellungen derselben Liste und arbeiten mit Positionen von Einträgen (der zweite * ist übergeben), müssen Sie die Syntax mit dem Objektnamen verwenden, da die Position von Einträgen von einer Darstellung zur nächsten variieren kann.
Hinweis: Verwenden Sie das Zeichen @ im Objektnamen der Liste und enthält das Formular mehrere Listen, zu denen dieser Name passt, wird Find in list auf das erste Objekt mit dem passenden Namen angewandt.
Mit dem zweiten * definieren Sie, ob Sie mit den aktuellen Positionen der Zeilen (* nicht übergeben) oder mit den absoluten Referenzen der Zeilen (* übergeben) arbeiten wollen.
Im Parameter Wert übergeben Sie die zu suchenden Zeichenketten. Die Suche ist vom Typ ist genau", d.h. die Suche nach Holz" findet nicht das Wort Holzhaus". Sie können jedoch das Jokerzeichen (@) für Suchläufe vom Typ "beginnt mit", "endet mit" oder "enthält" verwen-den.
Der Parameter Reichweite legt fest, ob die Suche nur auf der ersten Ebene der Liste oder auch mit allen Unterlisten ausgeführt wird. Mit 0 (Null) begrenzen Sie die Suche auf die erste Ebene der Liste, mit 1 wird sie auch auf alle Unterlisten ausgeweitet.
Um die Position oder Zahl aller Zeilen zu suchen, die Wert entsprechen, übergeben Sie im optionalen Parameter ZeilenArray ein Array vom Typ Lange Ganzzahl. Die Funktion erstellt bei Bedarf das Array und passt es an. Sie füllt das Array mit den Positionen (2ter * ist nicht übergeben) oder den Referenznummern (2ter * ist übergeben) der gefundenen Ein-träge.
Die Positionen werden in Bezug auf den obersten Eintrag in der Haupt-liste angegeben. Dabei wird auch der aktuelle Status auf-/zugeklappt der Liste und Unterlisten berücksichtigt.
Entspricht keine Zeile dem gesuchten Wert, gibt die Funktion 0 (Null) zurück und das Array ZeilenArray wird leer zurückgegeben.
Beispiel
Wir gehen von folgender hierarchischen Liste aus:
$vlItemPos:=Find in list(hList;"P@";1; $arrPos) `$vlItemPos equals 6 `$arrPos{1} equals 6 and $arrPos{2} equals 11 $vlItemRef:=Find in list(hList;"P@";1;$arrRefs;*) `$vlItemRef equals 7 `$arrRefs{1} equals 7 and $arrRefs{2} equals 18 $vlItemPos:=Find in list(hList;"Date";1;$arrPos) `$vlItemPos equals 9 `$arrPos{1} equals 9 and $arrPos{2} equals 16 $vlItemRef:Find in list(hList;"Date";1;$arrRefs;*) `$vlItemRef equals 11 `$arrRefs{1} equals 11 and $arrRefs{2} equals 23 $vlItemPos:=Find in list(hList;"Date";0;*) `$vlItemPos equals 0
Hierarchical Lists in 4D v11 SQL