edu-senex/edu/content/flashcards/deck-lists.md

4,8 KiB

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:

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:

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:

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):

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:

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:

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)