【发布时间】:2015-02-10 17:31:24
【问题描述】:
试图过滤 AX 中的特定数据范围并遇到问题。
这就是我想要做的,用伪代码..
(start >= now-30 && (end == null || end >= now-30))
||
(end >= now-30 && (start == null || start >= now-30))
||
(start >= now-30 && end >= now-30)
这是我尝试的方法
类声明
QueryBuildRange filterDates;
DS 初始化方法
filterDates=this.query().dataSourceName('LogTable').addRange(fieldNum(LogTable,startDateTime));
filterDates=this.query().dataSourceName('LogTable').addRange(fieldNum(LogTable,endDateTime));
DS 执行方法
filterDates.value(strFmt("(%1 >= %3 && (%2 == %4 || %2 >= %3)) || (%2 >= %3 && (%1 == %4 || %1 >= %3)) || (%1 >= %3 && %2 >= %3)", fieldStr(LogTable, startDateTime), fieldStr(LogTable, endDateTime), currentTimeMinus30Mins, DateTimeUtil::minValue()));
AX 似乎几乎忽略了我输入的所有完整查询。
谢谢
【问题讨论】:
-
试试 'info(query().XML());'在将语句传递给 QueryRun 对象以查看它吐出什么之前的语句?返回的 XML 是可读的伪 SQL。
标签: sql axapta x++ dynamics-ax-2012