| Funktion | Mit der CallSQL-Anweisung können Sie SQL-Funktionen für GuiXT Tabellenvariablen verwenden. |
|
Beispiele Weitere Beispiele und Erläuterungen |
CallSQL "DELETE FROM V[items] WHERE remove = 'X' "
In der Tabellenvariablen V[items] werden alle Zeilen gelöscht, die in Spalte "remove" ein "X" haben. CallSQL customerinfo = _ "SELECT c.account, c.name, c.city, co.countryname " && _ "FROM V[customers] AS c LEFT OUTER JOIN V[countries] AS co " && _ "ON c.country = co.country" In die Tabellenvariablen V[customerinfo] werden die angegebenen Spalten aus V[customers] kopiert und zusätzlich der passende Ländername "countryname" aus der Tabellenvariable V[countries] gesetzt. |
| Format |
CallSQL
"SQL Anweisung"
CallSQL varname = "SQL Anweisung" Mit beiden Notationen wird die SQL Anweisung ausgeführt, wobei als Tabellennamen GuiXT Tabellenvariablen in der Notation V[varname] genannt werden. Das Resultat der Anweisung wird, falls angegeben, in die Resultatvariable gestellt, die in der Regel ebenfalls eine Tabellenvariable ist. Falls eine Strukturvariable als Resultat angegeben ist, wird nur die erste Zeile der Resultatmenge gelesen und in die Strukturvariable gestellt. Die Angabe einer einfachen Variablen (nicht Struktur oder Tabelle) ist nur in Verbindung mit "SELECT count(*) FROM ..." möglich. Als SQL-Engine verwendet GuXT SQLite, dessen Syntax weitgehend dem SQL-Standard entspricht. Bitte beachten Sie bei eigenen Spaltennamen wie z.B. "order", dass die in SQL reservierten Namen in eckige KLammen eingeschlossen werden. Beispiel:
CallSQL selorders = "SELECT [order] FROM V[orders] WHERE selected = 'X' " Mit Q[ok] können Sie abfragen, ob die SQL-Anweisung erfolgreich ausgeführt wurde. In GuiXT-Systemfeldern (siehe unten) finden Sie dann weitere Informationen. |
| Optionen | mode="createFromResult" Die Resultatvariable wird mit den Spaltennamen der Resultatmenge der SQL-Anweisung automatisch mit CreateTable passend angelegt. Es ist also kein eigenes CreateTable davor erforderlich. mode="appendRows" Die Zeilen der Resultatmenge werden an die angegebene Tabellenvariable angehängt. mode="updateCells" Die Werte der Resultatmenge ersetzen die entsprechenden Zelleninhalte der Tabellenvariable. Sie können dadurch z.B. gezielt eine einzelne Spalte einer Tabellenvariablen füllen. mode="" Der Default-Modus, falls nicht angegeben oder leer, ist wie oben beschrieben das Füllen der Resultatvariablen. Hierbei werden die Spaltennamen der SQL-Resultattabelle den Spalten der Resultatvariablen über ihren Namen zugeordnet. Alle anderen Spalten bleiben leer. |
| Spezielle SQL Funktionen | Alle in SQLite verfügbaren SQL Funktionen wie concat(), replace(),... können über CallSQL genutzt werden. Eine Liste verfügbarer Funktionen finden Sie auf https://sqlite.org/lang_corefunc.html. Zusätzlich stehen die folgenden speziellen GuiXT Funktionen zur Verfügung, die in gleicher Weise wie die SQLite Standardfunktionen in der SQL Anweisung verwendet werden können. Ahch eine Kombination der SQLite-Funktionen mit GuiXT-Funktionen ist überall in der SQL-Anweisung möglich. guixtValue(varname, format) Die Funktion hat zwei Parameter: den Variablennamen sowie das gewünschte Format. Die GuiXT Variable mit dem angegebenen Namen wird ausgewertet und, falls angegeben, in das SQL-Format konvertiert:
... WHERE company = '&V[companyname]'
Bei dem direkten Einsetzen des Variablenwertes durch '&V[...]' erfolgt keine Verdoppelung des Zeichens ' innerhalb des Strings, und damit kann eine ungültige SQL-Anweisung entstehen. Stattdessen: ... WHERE company = guixtValue('companyname')Damit wird der Variablenwert nicht als Literal eingefügt, sondern erst bei der Interpretation der SQL-Anweisung an SQLite übergeben. guixtConvert(value, format) Die Funktion hat zwei Parameter: den zu konvertierenden Wert und das gewünschte Format. Folgende Formate sind möglich:
guixtProcess(proc, value1, value2, value3) Die Funktion kann mit zwei, drei oder vier Parametern aufgerufen werden. Der erste Parameter ist der Name eines "process" Scripts; dieses wird von GuiXT wie bei dem Schlüsselwort "process" aufgerufen. Es werden 1-3 Werte als Parameter übergeben und der Return-Wert der process-Funktion an SQL als Funktionswert zurückgegeben. Beispiel: "SELECT vbeln,posnr,matnr..." Ergebnis: 3974 000010 TG12 1804 000010 MZ-FG-C990 1804 000020 EWMS4-20"SELECT vbeln,guixtProcess('no_leading_zeros', posnr) as posnr,matnr..." Ergebnis: 3974 10 TG12 1804 10 MZ-FG-C990 1804 20 EWMS4-20Für jeden Wert in der Spalte "posnr" wird das GuiXT-Script "process_no_leading_zeros.txt" während der SQL-Verarbeitung aufgerufen:
GuiXT
|
| Systemfelder | V[_sqlrowcount] Anzahl der zurückgelieferten Zeilen V[_sqlchangecount] Anzahl der geänderten Zeilen V[_sqlerrortext] Fehlertext im Fehlerfall, z.B. falsche SQL-Syntax. Der Text wird auch im Script Editor angezeigt. V[_sqlstatement] Das SQL-Statement (nur im Fehlerfall). |
| Tips & Tricks | |
| Komponente | GuiXT + Controls |