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!
查看全文
相关阅读:
数据库系统学习(九)-嵌入式SQL语言之基本技巧
操作系统学习(九)-- 操作系统之文件系统(目录)
操作系统学习(八)-- 操作系统之磁盘(调度)与文件(实现)
从windows server 2003中学到的事儿
一名游戏开发者的告白
所谓“学术境界”
java解惑
程序员的职业素养
行业大会_平台
寻找优秀的程序员
原文地址:https://www.cnblogs.com/Farseer1215/p/1108302.html
最新文章
[UI] 精美UI界面欣赏[1]
设计模式
超简易复制Model对象(为后续备忘录设计模式博文做铺垫)
【转】Android单帧动画Rotate旋转
【转】Android开发:shape和selector和layer-list的(详细说明)
【转】Android之drawable state各个属性详解
【转】android 常用theme
【转】Android学习系列(39)--Android主题和样式之系统篇(上)
【转】android:windowSoftInputMode属性详解
【转】onConfigurationChanged
热门文章
【转】 ios的手势操作之UIGestureRecognizer浅析
【转】eclipse 错误信息 "File Search" has encounter a problem 解决
【转】android Looper 理解
2017年记录CS+CV
侯捷STL学习(12)--STL相关内容hash+tuple
侯捷STL学习(11)--算仿+仿函数+适配器
侯捷STL学习(十)--容器hashtable探索(unordered set/map)
侯捷STL学习(九)--关联式容器(Rb_tree,set,map)
侯捷STL学习(八)-- 深度探索deque
数据库系统学习(十)-嵌入式SQL语言之动态SQL
Copyright © 2011-2022 走看看