Hallo zusammen,
Ich habe zwei verschiedene Datentabellen und muss suchen und auswählen, ob das Wort in der anderen Tabelle vorhanden ist.
Ich habe versucht, Contains() zu verwenden, aber es funktioniert nicht. Bitte helfen Sie
Hier ist ein Beispiel:
dt1
dt2
| Hund und Gorilla |
| Maus, Giraffe |
| Hai, Wal, Pinguin |
| Strauß und Vogel |
| Löwe und Tiger, Kuh |
Ergebnis (Text in Fettschrift ist ausgewählt):
dt2
| Hund und Gorilla |
| Maus, Giraffe |
| Hai, Wal, Pinguin |
| Strauß und Vogel |
| Löwe und Tiger, Kuh |
Hier ist eine Möglichkeit, das zu tun, wonach Sie suchen. Bitte beachten Sie, dass in Ihrer Tabelle, die die Ergebnisse anzeigt, meiner Meinung nach Zeile 3 falsch ausgewählt ist.
Names Default To Here( 1 );
// Create the tables
dt1 = New Table( "Lookup", Add Rows( 5 ), New Column( "key", Character, Set Values( {"dog", "cat", "fish", "bird", "cow"} ) ) );
dt2 = New Table( "Base",
Add Rows( 5 ),
New Column( "Target", Character, Set Values( {"dog&gorilla", "mouse, giraffe", "shark, whale, penguin", "ostrich&bird", "lion&tiger,cow"} ) )
);
// Place all key values into a list
KeyList = dt1:key << get values;
// Loop across the keys and search each row of Target for the
// match
For Each( {val}, keyList,
For Each Row(
If( Contains( :Target, val ),
Row State( Row() ) = Selected State( 1 )
)
)
);

Nur eine Folgefrage: Kann ich diese ausgewählten Zeilen zum Abgleich mit anderen Tabellen verwenden? Wie im Update?
Ich verstehe Ihre Frage nicht. Sie können jedoch problemlos eine Teilmenge der Basistabelle erstellen, die nur die ausgewählten Zeilen enthält, und dann eine andere Tabelle aus dieser Tabelle aktualisieren. Hier ist die JSL zum Erstellen der Teilmenge
dt3 = dt2 << Subset( selected columns( 0 ), selected rows( 1 ) );