Komplexere Abfragen und Filter bei SQLDataExtensions

data
subfiles

#1

Mit den SQLDataExtensions kann ein Subfilegrid einfach um zusätzliche Spalten erweitert werden. Diese Werte werden per SQL gelesen.

Damit die Werte aus der SQL-Datenbank mit den Zeilen des Subfiles synchronisiert werden können, muss ein Filter definiert werden, woraus FlexSQLDataExtension entsprechende Where-Bedingungen im SQL-Statement generiert

SQLExtFilter

Komplexere Filterbedingung

In dem Beispiel aus dem Screenshot wird dabei u.a. folgende Zeile generiert:

where CUSTID = 13   (13 => Wert aus dem Subfile)

Jetzt kann es aber vorkommen, dass in der Datenbank eigentlich numerische Werte als Texte gespeichert werden. Hierdurch können führende Leerzeichen oder Nullen beim Vergleich zum Problem werden.

Deshalb verfügt die FlexSQLDataExtension über ein Ereigniss ProcessValue.

Mit dem folgenden Beispielscript wird der Wert der Spalte KDNR aus dem Subfilegrid in einen String mit führenden Nullen umgewandelt. Die Bedingungen für andere Spalten bleiben unverändert.

if (e.GridColumnName == "KDNR") // nur für die Gridspalte KDNR
{
   var formattedValue = e.GridValue.ToString(); // originaler Wert 
   // mit Nullen auffüllen
   while  (formattedValue.Length <10) 
       formattedValue = "0" + formattedValue;
   // neue Teilbedingung
   e.SQLClause = e.DataColumnName + " = '" + formattedValue + "'";
}

Komplexere Abfragen

Es kann vorkommen, dass das als Basis verwendete SQL zusätzliche Einschränkungen benötigt oder aus Joins zusammengebaut wird.

In diesem Fall muss die Checkbox “SQL enthält bereits eine ‘where’ Bedingung” angewählt werden.


Synchronisation bei FlexTableExtensions und SQLDataExtensions