This website uses cookies for visitor traffic analysis. By using the website, you agree with storing the cookies on your computer.More information

Custom Filter Condition

Allgemeine Fragen zur Entwicklung von und mit JVx.

Custom Filter Condition

Postby hansemar » Mon Aug 06, 2018 11:03 am

Hallo,

ich benötige einen Filter, welcher Datensätze selektiert die zwischen zwei Characters liegen. In SQL würde die Abfrage wie folgt aussehen:

Code: Select all
SELECT * FROM [Tabelle] a where LOWER(SUBSTR([Spalte], 1)) between 'b' and 'c';


In JVx habe ich keine ICondition gefunden in welcher diese "Custom" Where Bedingung darstellen kann.

Wie kann man so eine Filter Condition setzen?

Gruß Mark
hansemar
 
Posts: 15
Joined: Tue Jun 26, 2018 10:46 am

Re: Custom Filter Condition

Postby Support@SIB » Wed Aug 08, 2018 3:08 pm

Als schnelle Lösung könnten Sie auch ganz einfach eine SEARCH_SPALTE einführen, die dann lediglich das erste Zeichen enthält. Diese Spalte können Sie dann mit den Standard Conditions: GreaterEquals, LessEquals durchsuchen.

Mit dem Condition API können keine frei definierbaren Bedingungen erstellt werden, da diese nicht nur gegen die Datenbank funktionieren müssen sondern auch im Memory, ohne Datenbank. Bei frei definierbaren Bedingungen ist das aber nicht ohne weiteres möglich.

Sie können aber durchaus frei definierbare Bedingungen verwenden, allerdings mit etwas Vorsicht. Hier ein Beispiel wie wir es in unserer Workflow Engine einsetzen:

Syntax: [ Download ] [ Hide ]
workflows = new DBStorage();
workflows.setDBAccess(dbAccess);
workflows.setWritebackTable("WF_WORKFLOWS");
workflows.setWhereClause(":SEARCH is null"
                       + " or lower(WORKFLOW) like lower(:SEARCH)"
                       + " or exists (select *" +
                       "                from wf_wofl_steps ws" +
                       "                join wf_functions f on f.id = ws.func_id" +
                       "               where ws.wofl_id = m.id" +
                       "                 and (lower(f.function) like lower(:SEARCH)" +
                       "                      or lower(ws.name) like lower(:SEARCH)" +
                       "                      or lower(f.descr) like lower(:SEARCH)))" +
                       "   or exists (select *" +
                       "                from wf_wofl_steps ws" +
                       "                join wf_wfst_params p on p.wfst_id = ws.id" +
                       "               where ws.wofl_id = m.id" +
                       "                 and (lower(p.name) like lower(:SEARCH)" +
                       "                      or lower(ws.name) like lower(:SEARCH)" +
                       "                      or lower(p.value) like lower(:SEARCH)))");
workflows.setDefaultSort(new SortDefinition("WORKFLOW"));
workflows.open();
                   
workflows.getMetaData().addColumnMetaData(new ColumnMetaData("SEARCH"));
 

Durch das Hinzufügen von SEARCH zu den MetaDaten, erhalten Sie die Möglichkeit am GUI ganz einfach danach zu Filtern.

Ein anderes Beispiel zu dynamischen Parametern: UITable und postgres function mit Parametern
User avatar
Support@SIB
 
Posts: 353
Joined: Mon Sep 28, 2009 1:56 pm


Return to Development (DE)