167 Zeilen
4,8 KiB
Markdown
167 Zeilen
4,8 KiB
Markdown
|
|
# 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) | | | |
|