# Flashcard Deck: Listen & Rows **Thema**: Omnis Listen - der universelle Datencontainer **Schwierigkeit**: Anfaenger -> Fortgeschritten **Karten**: 20 --- ## Karte 1 | Basis **Q:** Was ist eine "List" in Omnis? **A:** Ein zweidimensionaler Datencontainer mit benannten, typisierten Spalten und beliebig vielen Zeilen. Wie ein Array von Objects in JS, ein DataFrame in Python, oder ein RecordSet in VB. --- ## Karte 2 | Basis **Q:** Was ist eine "Row" in Omnis? **A:** Eine einzelne Datenzeile mit benannten Spalten. Wie ein Object/Dictionary. Eine List besteht aus vielen Rows. --- ## Karte 3 | Basis **Q:** Wie erstellst du eine Liste mit Spalten? **A:** ```omnis Do lList.$cols.$add('id', kInteger) Do lList.$cols.$add('name', kCharacter, kSimplechar, 100) Do lList.$cols.$add('price', kNumber, k2dp, 10) ``` --- ## Karte 4 | Basis **Q:** Wie fuegst du eine Zeile zu einer Liste hinzu? **A:** ```omnis Do lList.$add() Calculate lList.id as 1 Calculate lList.name as "Produkt A" Calculate lList.price as 29.99 ``` `$add()` fuegt eine Zeile hinzu UND macht sie zur aktuellen Zeile. --- ## Karte 5 | Basis **Q:** Wie iterierst du ueber alle Zeilen einer Liste? **A:** ```omnis For each line in list from 1 to lList.$linecount step 1 # lList.spaltenname gibt den Wert der aktuellen Zeile Calculate lTotal as lTotal + lList.price End For ``` --- ## Karte 6 | Mittel **Q:** Wie suchst du in einer Liste? **A:** `Do lList.$search(lList.name = "Produkt A")` - Setzt `$line` auf den Treffer. `If flag true` prueft ob gefunden. --- ## Karte 7 | Mittel **Q:** Wie sortierst du eine Liste? **A:** `Do lList.$sort(lList.name, kTrue)` - Sortiert nach Spalte "name". `kTrue` = aufsteigend, `kFalse` = absteigend. --- ## Karte 8 | Mittel **Q:** Wie entfernst du eine Zeile aus einer Liste? **A:** `Do lList.$remove(lList.$line)` entfernt die aktuelle Zeile. `Do lList.$remove(3)` entfernt Zeile 3. `Do lList.$clear()` leert alle Zeilen. --- ## Karte 9 | Mittel **Q:** Was ist `$linecount`? **A:** Die Anzahl der Zeilen in einer Liste. `Calculate lAnzahl as lList.$linecount`. Wie `array.length` in JS. --- ## Karte 10 | Mittel **Q:** Was ist `$line`? **A:** Die aktuelle Zeilennummer einer Liste (1-basiert!). Wird durch `$search`, `$add`, Klick auf Grid gesetzt. `0` = keine Zeile gewaehlt. --- ## Karte 11 | Mittel **Q:** Wie liest du eine bestimmte Zeile (nicht die aktuelle)? **A:** `Calculate lVal as lList.[3].name` liest Spalte "name" von Zeile 3. Die eckigen Klammern addressieren die Zeilennummer. --- ## Karte 12 | Fortgeschritten **Q:** Was macht `$sendall()`? **A:** Fuehrt einen Ausdruck fuer JEDE Zeile der Liste aus (wie `forEach` + `map` in einem): ```omnis Do lList.$sendall($ref.price.$assign($ref.price * 1.19)) ``` `$ref` = aktuelle Zeile. --- ## Karte 13 | Fortgeschritten **Q:** Wie filterst du eine Liste? **A:** `$search` mit `kTrue` im 2. Parameter zeigt nur Treffer: ```omnis Do lList.$search(lList.status = 'active', kTrue) ``` Nicht-Treffer werden "ausgeblendet" (nicht geloescht). `Do lList.$search(kTrue)` zeigt wieder alle. --- ## Karte 14 | Fortgeschritten **Q:** Was ist der Unterschied zwischen `$merge()` und `$add()`? **A:** `$add()` fuegt eine leere Zeile hinzu. `$merge(lOtherList)` fuegt ALLE Zeilen einer anderen Liste hinzu - wie `array.concat()` in JS. --- ## Karte 15 | Fortgeschritten **Q:** Wie definierst du eine Liste aus einer Schema-Klasse? **A:** `Do lList.$definefromsqlclass('scMySchema')` - Uebernimmt die Spaltenstruktur aus dem Schema. Wie ein Typ/Interface fuer die Liste. --- ## Karte 16 | Fortgeschritten **Q:** Was ist `$colcount`? **A:** Die Anzahl der Spalten einer Liste. `Calculate lCols as lList.$colcount`. Fuer dynamische Listen nuetzlich. --- ## Karte 17 | Fortgeschritten **Q:** Wie kopierst du eine Liste? **A:** `Calculate lCopy as lOriginal` erstellt eine **Kopie** (nicht Referenz!). Omnis-Listen sind Value-Types, nicht Reference-Types wie in JS! --- ## Karte 18 | Fortgeschritten **Q:** Wie befuellst du eine Liste aus SQL? **A:** ```omnis Do lStmt.$execdirect('SELECT * FROM orders') Returns #F If flag true Do lStmt.$fetch(lList, kFetchAll) Returns #F End If ``` `kFetchAll` holt alle Zeilen auf einmal. --- ## Karte 19 | Fortgeschritten **Q:** Was ist `$selected` bei einer Liste? **A:** Ein Boolean-Flag pro Zeile, das anzeigt ob die Zeile "ausgewaehlt" ist (z.B. per Checkbox im Grid). `lList.$selected` liest/setzt den Wert der aktuellen Zeile. --- ## Karte 20 | Fortgeschritten **Q:** Was ist der Unterschied zwischen Listen und Rows beim SQL-Fetch? **A:** `$fetch(lList, kFetchAll)` holt mehrere Zeilen in eine Liste. `$fetch(lRow, kFetchOne)` holt nur eine Zeile in eine Row. Row = einzelner Datensatz, Liste = Ergebnismenge. --- ## Spaced Repetition Tracking | Karte | Zuletzt | Naechste | Schwierigkeit | |-------|---------|----------|---------------| | (wird beim Ueben gefuellt) | | | |