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!
查看全文
相关阅读:
软件工程概论第十二周学习进度
冲刺第十天
评价搜狗输入法
冲刺第九天
冲刺第八天
冲刺第七天
冲刺第六天
冲刺第五天
软件工程概论第十一周学习进度
冲刺第四天
原文地址:https://www.cnblogs.com/Farseer1215/p/1108302.html
最新文章
个人博客三
个人博客二
个人博客一
第二次冲刺 07
第二次冲刺 06
第二次冲刺 05
第二次冲刺 04
第二次冲刺 03
第二次冲刺 02
第二次冲刺 01
热门文章
冲刺第九天
冲刺第八天
冲刺第七天
冲刺第六天
冲刺第五天
冲刺第四天
冲刺第三天
软件工程概论第十一周学习进度
冲刺第二天
用户场景描述
Copyright © 2011-2022 走看看