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!
查看全文
相关阅读:
C语言时间函数
sqlplus 配置方法及相关命令
EDdb 是ED数据
关于数据库性能管理专家的一个网站
实用小技巧:在键盘没有小键盘时怎么打开任务管理器
l来自wentao:项目加入缓存(redis),实时调试时用 -----可视化缓存,flushdb
转:影响数据检索效率的几个因素
apache-storm-1.0.3安装部署
Hadoop2.7.3+spark2.1.0+hbase0.98分布式集群部署
/etc/security/limits.conf的相关说明
原文地址:https://www.cnblogs.com/Farseer1215/p/1108302.html
最新文章
Python3基础 setattr 设置对象的属性值,如果属性不存在就创建
Python3基础 super 子类调用父类的__init__
MVC中cshtml文件中怎样使用ViewBag进行筛选?
Entity Framework Code First关系映射约定【l转发】
在Jquery validation里验证通过后,自定义提交不同的action路径,适合一个窗口既可以作为添加对话框也可以作为编辑对话框
bootstrap model弹出框的使用
使用jQuery.form插件,实现完美的表单异步提交【转发】
【转发】jQuery1.9.1至最高版本针对checkbox的调整
[转发]jQuery Validation范例
【转发】MVC Log4net
热门文章
【摘自网络】每个注册用户都有自已的二级域名
【转发】Visual Studio 2013 如何关闭调试而不关闭IIS Express
安装PL/SQL Developer 遇到的问题及解决方法
百度文库,linux下安装oracle客户端
10GE---超长距离的万兆以太网
NAT/PAT
【转】不得不看的两次从C++回归C的高手评论C++
intel 系列的PC机处理器是大端的还是小端的?
Oracle 11g客户端在Linux系统上的配置步骤详解
如何查看LINUX 硬件配置信息
Copyright © 2011-2022 走看看