这个范围怎么了?
rangeTransDate = strFmt('(("%1.%2" <= "%3" && "%3" == "%5") || ("%1.%4" > "%3"))',tableStr(CustomTable),fieldStr(CustomTable,TransDate), date2str(dateTo,321,2,0,2,0,4),fieldStr(CustomTable,SettlementDate),SysQuery::valueEmptyString());我得到了一个错误:
查询扩展范围错误:位置72旁边的右括号。
发布于 2020-12-03 19:58:18
AX 2012文件的这一页仍然相关(我找不到AX365版本)。突出显示重要的bit:
创建查询范围值表达式的规则如下:
这意味着X++需要在每个比较运算符(a.k.a )周围加上花括号。文档中的“子表达式”)。你错过了一些..。
此外,使用date2strxpp()函数正确处理所有日期到字符串的转换。该函数可以通过将空日期值(dateNull())转换为1900-01-01来处理这些值。我怀疑在其中放置空字符串(SysQuery::valueEmptyString())是否有效。
因此,尝试这样做,注释子表达式级别显示了括号分组:
// subexpressions lvl 2: 4 4
// subexpressions lvl 1: |1 1 2 2 3 3|
// || | | | | ||
rangeTransDate = strFmt('(("%1.%2" <= "%3") && ("%3" == "%5") || ("%1.%4" > "%3"))',
tableStr(CustomTable),
fieldStr(CustomTable,TransDate),
date2strxpp(dateTo),
fieldStr(CustomTable,SettlementDate),
date2strxpp(dateNull()));如果在运行时仍然遇到类似的错误,则添加更多括号,将每个子表达式分组成对:
// subexpressions lvl 3: 5 5
// subexpressions lvl 2: |4 4 3 3|
// subexpressions lvl 1: ||1 1 2 2| 3 3|
// ||| | | || | ||
rangeTransDate = strFmt('((("%1.%2" <= "%3") && ("%3" == "%5")) || ("%1.%4" > "%3"))',
tableStr(CustomTable),
fieldStr(CustomTable,TransDate),
date2strxpp(dateTo),
fieldStr(CustomTable,SettlementDate),
date2strxpp(dateNull()));https://stackoverflow.com/questions/65111926
复制相似问题