我想建立查询范围,在哪里
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()
此类查询中使用的日期值必须采用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())
));
如果你检查Global::dateNull()
,你会看到它返回'01 \ 01 \ 1900',你也可以看到数据库在这些字段中没有存储0:
你可以找到更多细节here
因此,您可以按如下方式简化扩展范围
qbrMainAccountActiveFrom.value(strFmt('((%1.%2 > %4) || (%1.%3 < %4))',
qbds.name(),
fieldStr(DimensionAttributeValue, ActiveFrom),
fieldStr(DimensionAttributeValue, ActiveTo),
today()
));