Beispiel Block-Funktion XTAB

Block-Funktion XTAB

/XTAB_BLOCK
«
{
    // Ermittelt, ob eine bestimmte Tabelle existiert.
    if(XTAB.IsDefined('XTended_HARRAY')=FALSE)
    {
    // Neue Tabelle definieren resp. bestehende Tabelle (Daten und Struktur) zurücksetzen.
       XTAB.CreateOrClear('XTended_HARRAY')
    }
    // Spalte hinzufügen. Zurückgegeben wird Nummer der eingefügten Spalte. 
    // Aktuell unterstützt werden die Datentypen 'A', 'B', 'D' und 'R'.
    // Standardmässig (ohne nähere Angabe) wird eine 'A'-Spalte erstellt.
    XTAB.AddCol('XTended_HARRAY', 'ID', 'R')
    XTAB.AddCol('XTended_HARRAY', 'FirstName', 'A')
    XTAB.AddCol('XTended_HARRAY', 'LastName', 'A')
    XTAB.AddCol('XTended_HARRAY', 'BirthDay', 'D')
    XTAB.AddCol('XTended_HARRAY', 'isSCHeff', 'B')

    // Zusätzliche Zeile hinzufügen, wobei die Spalten-Werte optional mitgegeben werden können. 
    XTAB.AddRow('XTended_HARRAY', 100,'Martin','Schild',date(15.04.1967))
    XTAB.AddRow('XTended_HARRAY', 101,'Kai','Reichmuth',date(23.11.1991))
    XTAB.AddRow('XTended_HARRAY', 102,'Roman','Vonwil',date(05.04.1980))

    // Liefert Nummer der ersten passenden Zeile. 0 wenn keine Zeile passt. 
    // Übergebenes Filter wirkt (standardmässig) additiv zu für ganze Tabelle gesetztem View-Filter 
    // (kann durch entsprechendes Argument übersteuert werden). 
    // ACHTUNG: Kann bei Tabellen mit vielen Zeilen langsam sein!
    var scheffNO := XTAB.FindFirstRow('XTended_HARRAY', "ID = 100", FALSE)

    // Einen Wert setzen (standardmässig unter Einbezug einer allfälligen View). 
    XTAB.SetValByColName('XTended_HARRAY', 'isSCHeff', scheffNO, TRUE)

    // Liefert Anzahl Spalten. 
    var cols := XTAB.GetNmbOfCols('XTended_HARRAY')

    // Einen Filter setzen: Nach dem Setzen ist nur noch ein Subset der Zeilen sichtbar. 
    // Zurückgegeben, wird die Anzahl der 'sichtbaren' Zeilen. 
    // ACHTUNG: Kann bei Tabellen mit vielen Zeilen langsam sein! 
    XTAB.SetViewFilter('XTended_HARRAY','isSCHeff = TRUE')

    // Liefert Anzahl Zeilen (standardmässig unter Einbezug einer allfälligen View). 
    var rows := XTAB.GetNmbOfRows('XTended_HARRAY', FALSE)
    SYS("MSG INFO ROWS mit Filter: "+string(rows) )

    rows := XTAB.GetNmbOfRows('XTended_HARRAY', TRUE)
    SYS("MSG INFO ROWS ohne Filter: "+string(rows) )
    // Filter zurücksetzen. Zurückgegeben wird die Anzahl Zeilen welche nach dem
    // Entfernen des Filters sichtbar ist (alle Zeilen).
    XTAB.ClearViewFilter('XTended_HARRAY')
    // Sortierreihenfolge gemäss den übergebenen Spalten-Namen setzen. 
    // Prefix '-' = absteigende Sortierung. ACHTUNG: Kann bei Tabellen mit vielen Zeilen langsam sein!
    XTAB.SetViewOrderByColNames('XTended_HARRAY', '-BirthDay','LastName','FirstName')

    XFAS.AddHeads('ID','FirstName','LastName','BirthDay','isSCHeff')

    for(var row := 1, row <= rows, ++row)
    {
    // Wert (standardmässig unter Einbezug einer allfälligen View) als Zahl abholen. 
       XFAS.AddCell( XTAB.GetNmbVal('XTended_HARRAY', 1, row, FALSE, TRUE) )
    // Wert (standardmässig unter Einbezug einer allfälligen View) als String abholen.
       XFAS.AddCell( XTAB.GetStrVal('XTended_HARRAY', 2, row, FALSE, TRUE) )
    // Wert (standardmässig unter Einbezug einer allfälligen View) als String abholen (via Spaltenname). 
       XFAS.AddCell( XTAB.GetStrValByColName('XTended_HARRAY', 'LastName', row, FALSE, TRUE) )
    // Wert (standardmässig unter Einbezug einer allfälligen View) als Datum abholen.
       XFAS.AddCell( XTAB.GetDateVal('XTended_HARRAY', 4, row, FALSE, TRUE) )
       XFAS.AddCell( XTAB.GetNmbVal('XTended_HARRAY', 5, row, FALSE, TRUE) )
    }
}
»
/