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 TypSR
RückgabetypormType
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ückgabecriteriaString
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
}