查询Dynamics AX中的日期范围

问题描述 投票:1回答:2

我想建立查询范围,在哪里

enter image description here

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,因为在表DimensionAttributeValue中,如果字段为ActiveFrom,则ActiveTo为null,它的值为0,而不是dateNull(),dateMax()

date range axapta microsoft-dynamics
2个回答
4
投票

此类查询中使用的日期值必须采用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())
            ));

1
投票

如果你检查Global::dateNull(),你会看到它返回'01 \ 01 \ 1900',你也可以看到数据库在这些字段中没有存储0:enter image description here

你可以找到更多细节here

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

qbrMainAccountActiveFrom.value(strFmt('((%1.%2 > %4) || (%1.%3 < %4))',   
                               qbds.name(),
                               fieldStr(DimensionAttributeValue, ActiveFrom),
                               fieldStr(DimensionAttributeValue, ActiveTo),
                               today()
                               ));
© www.soinside.com 2019 - 2024. All rights reserved.