首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >x++中的strfmt范围

x++中的strfmt范围
EN

Stack Overflow用户
提问于 2020-12-02 16:14:52
回答 1查看 784关注 0票数 1

这个范围怎么了?

代码语言:javascript
复制
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旁边的右括号。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-03 19:58:18

AX 2012文件的这一页仍然相关(我找不到AX365版本)。突出显示重要的bit:

创建查询范围值表达式的规则如下:

  • 将整个表达式括在括号中。
  • 将所有子表达式括在括号中.
  • 使用X++中可用的关系运算符和逻辑运算符。
  • 仅使用区域数据源中的字段名。
  • 对查询中其他数据源的字段使用dataSource.field表示法。

这意味着X++需要在每个比较运算符(a.k.a )周围加上花括号。文档中的“子表达式”)。你错过了一些..。

此外,使用date2strxpp()函数正确处理所有日期到字符串的转换。该函数可以通过将空日期值(dateNull())转换为1900-01-01来处理这些值。我怀疑在其中放置空字符串(SysQuery::valueEmptyString())是否有效。

因此,尝试这样做,注释子表达式级别显示了括号分组:

代码语言:javascript
复制
// 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()));

如果在运行时仍然遇到类似的错误,则添加更多括号,将每个子表达式分组成对:

代码语言:javascript
复制
// 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()));
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65111926

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档