数值类型允许为空使用说明
为了适应特定的业务场景,在数值类型上新增“允许为空”属性,由于此次功能增强,将会影响到数值的统计、运算以及其他关联模块功能,所以在日常使用中会有一些注意事项。
特性效果展示
一、页面效果
二、使用范围
设计器页面:目前支持允许为空的控件有整数、长整数、小数、单价、数量、金额,附件数、打印次数控件不支持该属性的设置,报表设计器不支持允许为空属性的设置。
三、注意事项
1、开启允许为空,需要开启为零显示
如果不开启页面上0和空值的显示效果都是空;
2、历史字段需要允许为空
如果是历史数值类型字段,因为数据库表建字段时设置了不允许为空默认值为0,如果想改成允许为空,需要使用SQL脚本或者数据库可视化工具修改字段属性,下图以ORACLE数据库可视化页面为例:
A、使用可视化工具修改如下图所示:
B、脚本修改
以Oracle数据库为例:
语法:ALTER TABLE <表名> MODIFY <列名> NULL;
示例:ALTER TABLE T_TESTNULL728 MODIFY FINTEGERFIELD NULL;
默认值可设置可不设置;
3、开启允许为空后,后续如果想关闭允许为空
对于已经录入空值的数据,界面展示的是0,如果需要把数据库空值改为0,需要使用SQL脚本,以下以Oracle为例:
语法:UPDATE <表名> SET <列名> = 0 WHERE <列名> IS NULL;
示例:UPDATE T_TESTNULL720 SET FINTEGERFIELD = 0 WHERE FINTEGERFIELD IS NULL;
4、反写规则说明
对于空值,反写方式为累加、扣减时,空值当做0来参与计算;
5、转换规则说明
如果源单行都为空值,那么合计、最大、最小、平均值结果都是空;如果有行不为空值,那么只有非空行参与计算最大、最小、合计、平均值。
6、列表合计时如果列数据都为空,则合计为空;
7、如果数值字段开启允许为空,打印数据时注意:
原来使用以下5种方法的
int getInt(String propertyName)
int getInt(int index)
int getInt (IDataEntityProperty dp)
long getLong(String propertyName)
long getLong(int index)
需要换成以下3种方法,
object get(int index)
object get (String propertyName)
object get (IDataEntityProperty dp)
原因是原来的5种方法取数据库空值时会导致与基本数值类型的转换异常。
8、允许为空的情况下,开启必录,不能录入空但是可录入0;
四、建议
1、数值允许为空开启前需谨慎,因为开启后会有空值录入,后续如果想再关闭需要修改数据库会比较麻烦。
2、性能考虑,能不开启就不要开启允许为空属性。
数值类型允许为空使用说明
本文2024-09-23 00:23:53发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-139204.html