zoukankan
html css js c++ java
enum2str做为queryValue时的问题
JachE 提到在Query中对枚举类型DocumentStatus字段的值进行限定的问题,由于QueryBuildRange的value只能是str类型的,所以需要用Enum2Str(DocumentStatus::None)进行转换,但我试了一下这个方法好像有问题:
static
void
Enum2StrTest(Args _args)
{
Query q;
QueryBuildDataSource qbds;
QueryRun qr;
PurchParmUpdate purchParmUpdate;
;
q
=
new
Query();
qbds
=
q.addDataSource(tableNum(PurchParmUpdate));
qbds.addRange(fieldNum(PurchParmUpdate,DocumentStatus)).value(enum2str(DocumentStatus::None));
info(qbds.toString());
}
这样打印出的语句并没有添加where条件,由于enum2Str的结果是枚举值对应的Label值,所以出现这样的情况应该去查一下该枚举值对应的Label,确实AX系统中该枚举值没有对应的Label,于是设定None对应的Label为"没有文档",可以看到上面语句打印的结果是:
SELECT
*
FROM purchParmUpdate WHERE ((DocumentStatus
=
0
))
这样看来在添加Label后就可以打印了.
突然奇想,由于枚举值在数据库里存储的类型是int,如果Lable全是数字的话,结果会怎么样那?我试着将None对应的值设为2,上面的语句打印的结果变成了:
SELECT
*
FROM purchParmUpdate WHERE ((DocumentStatus
=
2
))
将其写成234:
SELECT
*
FROM purchParmUpdate WHERE ((DocumentStatus
=
234
))
这样显然不是自己想要的结果.
综上所述:
1.对于枚举类型的值一定要为其设置Label;
2.设定的值不能全为数字.
当然我这只是自己瞎鼓捣的结果,不知道微软有没有正式的文档说明这个问题,所以如果有人知道如何解决这个问题,还望多多指教.
非常感谢JachE!
查看全文
相关阅读:
lua 学习
IOS表情存入MYSQL数据库失败
C# string数组转int数组
打开端口
win10下设置IIS、安装php7.2
NET Core 应用程序 IIS 运行报错 502.3-Gateway
微信小程序(一)--简单的介绍
C#socket通信
使用VScode 的插件
Vue学习笔记:Slot
原文地址:https://www.cnblogs.com/Farseer1215/p/1108302.html
最新文章
Composer使用
Software Defined Networking(Week 1)
【CSAPP笔记】1. 位、字节、整型
Internet History, Technology and Security (Week⑨)
第三次寒假作业
Internet History, Technology and Security (Week8)
Internet History, Technology and Security (Week7)
Internet History, Technology and Security (Week6)
作业2
Internet History, Technology and Security (Week5.2)
热门文章
Internet History, Technology and Security (Week5.1)
Internet History, Technology and Security (Week4)
Internet History, Technology and Security (Week3)
Internet History, Technology and Security (Week2)
Internet History, Technology and Security (Week1)
Internet History, Technology and Security (Get Started)
《Effective C++》第三版笔记
PYTHON学习总结
《C++编程规范》
python
Copyright © 2011-2022 走看看