Formeln werden in der Konfiguration als Strings erfasst. Als Eingabeelemente ist es sinnvoll ein Memofeld zu nutzen. Für Bedingungen kann der Bedingungseditor genutzt werden.

Möchte man den Criteria String in Criteria Objekte wandeln, tut man dies mit

CriteriaOperator criteria = CriteriaOperator.parse("Iif(StartsWith([TextField], 'Inhalt'), [TextField], 'Kein Inhalt da')");

Für die Syntaxüberprüfung stehen in der Klasse CriteriaOperatorHelper Methoden zur Verfügung.

Ausführung in .Net

public static Func<ST, SR> CompileExpression<ST, SR>(Type ormType, CriteriaOperator criteria, ICriteriaToExpressionConverter converter = null)

Methode zur Kompilierung gegen eine Datentabelle mit einem gewünschten Rückgabetyp

  • ST ORM Typ
  • SR Rückgabetyp
  • ormType Datentabelle, auf deren Basis kompiliert wird.
  • criteria
  • converter Optionaler Converter
  • Rückgabe: Eine Exception oder eine ausführbare .Net Funktion.

Beispiel inkl. Kompilierung und Ausführung

try
{
    CriteriaOperator criteria = CriteriaOperator.Parse("Iif(StartsWith([TextField], 'Inhalt'), [TextField], 'Kein Inhalt da')");
    Func<OrmBase, object> compiled = CriteriaOperatorHelper.CompileExpression<OrmBase, object>(typeof(OrmMyDataTable), criteria);
    string text = compiled(myData)?.ToString();
}
catch (Exception ex) when (!ex.IsThreadAbort())
{
    // Fehler Handling
}

Datenbankformeln

public static CriteriaOperator ValidateDBCriteria(Type ormType, Type targetType, string criteriaString)

Validiert den Criteria String und gibt Criteria Objekte zurück.

  • ormType Die Datentabelle, auf der die Formel ausgeführt werden soll.
  • targetType Erwarteter Typ der Rückgabe
  • criteriaString Die Formel
  • Rückgabe: Eine Exception oder die Criteria Objekte

Beispiel

try
{
    CriteriaOperato criteria = CriteriaOperatorHelper.ValidateDBCriteria(typeof(OrmMyDataTable), typeof(bool), "StartsWith([TextField], 'Inhalt')");
    if(orm.Fit(criteria) { ... }
}
catch (Exception ex) when (!ex.IsThreadAbort())
{
     // Fehler Handling
}