Sometimes there is a need to query some records using OR and put it to a query range
For example: we need to query records which are from the past and from the future.
Below, you can find an example of such query on table called just Table1
There is no date effective property on the table, so fields ValidFrom and ValidTo are just Date type fields created on that table.
As you can see all range has been built on ValidFrom field, even when it touches also ValidTo.
static void Job21(Args _args)
{
Query query = New Query();
QueryRun queryRun;
QueryBuildDataSource qbds;
str range;
Table1 table1;
qbds = query.addDataSource(tableNum(Table1));
qbds.addRange(fieldNum(Table1, ValidFrom));
range = strFmt('((%1.%2 < %3) && (%4.%5 < %6)) || ((%7.%8 > %9) && (%10.%11 > %12))',
qbds.name(),
fieldStr(table1, ValidFrom),
date2StrXpp(today()),
qbds.name(),
fieldStr(table1, ValidTo),
date2StrXpp(today()),
/// after or
qbds.name(),
fieldStr(table1, ValidFrom),
date2StrXpp(today()),
qbds.name(),
fieldStr(table1, ValidTo),
date2StrXpp(today()));
qbds.addRange(fieldNum(Table1, ValidFrom)).value(range);
}
No comments:
Post a Comment