查询 Dynamics AX 中的日期范围

Date range in query Dynamics AX

我想构建查询范围,其中

ActiveTo <今天|| ActiveFrom > 今天。

有可能吗,我试过类似的方法,但是没有用。

qbdsDimAttrValue = ds.addDataSource(tableNum(DimensionAttributeValue));
qbrMainAccountActiveFrom = qbdsDimAttrValue.addRange(fieldnum(DimensionAttributeValue,ActiveFrom));
qbrMainAccountActiveFrom.value(strFmt('(((%1.%2 != 0) || (%1.%3 != 0)) && ((%1.%2 > %4) || (%1.%3 < %4)))',   
            qbdsDimAttrValue.name(),
            fieldStr(DimensionAttributeValue,ActiveFrom),
            fieldStr(DimensionAttributeValue,ActiveTo),
            today(),
            ));

我写 0,因为在 table DimensionAttributeValue 中,如果字段 ActiveFrom、ActiveTo 为空,它的值为 0,而不是 dateNull()、dateMax()

如果您检查 Global::dateNull(),您会看到它 returns '0100',您还可以看到数据库不在这些字段中存储 0:

你可以找到更多详细信息here

因此您可以按如下方式简化您的扩展范围

qbrMainAccountActiveFrom.value(strFmt('((%1.%2 > %4) || (%1.%3 < %4))',   
                               qbds.name(),
                               fieldStr(DimensionAttributeValue, ActiveFrom),
                               fieldStr(DimensionAttributeValue, ActiveTo),
                               today()
                               ));

此类查询中使用的日期值必须采用 dd\MM\yyyy 格式 - 您可以为此目的使用函数 date2StrXpp()

尝试使用以下范围:

qbrMainAccountActiveFrom.value(
    strFmt('((%1.%2 > %4) || ((%1.%3 < %4) && (%1.%3 != %5)))',
            qbdsDimAttrValue.name(),
            fieldStr(DimensionAttributeValue, ActiveFrom),
            fieldStr(DimensionAttributeValue, ActiveTo),
            date2StrXpp(systemDateGet()),
            date2StrXpp(dateNull())
            ));