二开案例.单据设计.文本字段编辑长度突破2000的限制
【应用场景】文本字段编辑长度突破2000的限制。
背景说明:文本字段出于性能考虑,BOS设计器默认给的字段类型为nvarchar,且长度不能超过2000。
如果超过长度,设计器会报错,运行时也会拦截。
【解决方案】
不依赖BOS设计器创建文本字段对应的数据库表物理字段,提前在数据库对应表将文本字段按实际需要的大小创建好。
例如:
--最大存储4000个字符
ALTER TABLE T_PUR_POORDER ADD F_JAC_TEXT NVARCHAR(4000) NOT NULL DEFAULT('')
--超大文本(2GB)(影响性能,请勿滥用!!!)
ALTER TABLE T_PUR_POORDER ADD F_JAC_TEXT NVARCHAR(MAX) NOT NULL DEFAULT('')
【案例演示】采购订单,新建文本字段,设置其可编辑范围为999999(超大文本)。
【实现步骤】
<1>连接数据中心对应的数据库,通过SQL新建文本字段。
ALTER TABLE T_PUR_POORDER ADD F_JAC_TEXT NVARCHAR(MAX) NOT NULL DEFAULT('')
<2>打开BOSIDE,扩展采购订单,新增文本字段,可编辑长度设置为999999,字段名称设置为F_JAC_TEXT ,保存元数据,开发完毕。
<3>登录业务站点,打开采购订单新增界面,录入超长文本,可以正常保存,测试效果如下。
---------------------------------------------------------------------------------------------------------
【关于几种经典应用场景的解决方案说明】
【场景一】字段不存在
-- 场景一:字段不存在,新建超大文本字段
ALTER TABLE T_PUR_POORDER ADD F_JAC_TEXT NVARCHAR(MAX) NOT NULL DEFAULT('')
【场景二】字段已存在,且支持类型转换
-- 场景二:字段已存在,但是字段当前类型支持切换到目标类型,例如int转varchar,varchar转int
-- 修改已存在的文本字段为超大文本字段
ALTER TABLE T_PUR_POORDER ALTER COLUMN F_JAC_TEXT NVARCHAR(MAX) NOT NULL
-- 如果修改字段类型报默认值依赖错误,就先删除字段的默认值
--ALTER TABLE T_PUR_POORDER DROP CONSTRAINT DF__T_PUR_POO__F_JAC__17F53E72
-- 字段添加默认值
ALTER TABLE T_PUR_POORDER ADD DEFAULT('') FOR F_JAC_TEXT
【场景三】字段已存在,且不支持类型转换
-- 场景三:字段已存在,且字段当前类型无法切换到目标类型,此时只能先删除此字段,再新建目标类型的字段
-- 删除现有字段
ALTER TABLE T_PUR_POORDER DROP COLUMN F_JAC_TEXT
-- 如果删除字段类型报默认值依赖错误,就先删除字段的默认值
--ALTER TABLE T_PUR_POORDER DROP CONSTRAINT DF__T_PUR_POO__F_JAC__18E962AB
-- 新建字段
ALTER TABLE T_PUR_POORDER ADD F_JAC_TEXT NVARCHAR(MAX) NOT NULL DEFAULT('')
---------------------------------------------------------------------------------------------------------
【常见问题】
<1>调整字段时,经常会遇到默认值依赖问题,需要先手动删除字段的默认值,再执行后续的修改字段的SQL。
删除默认值的关键是找到这个默认值的名称,通过报错消息,即可找到字段所依赖的默认值的名称。
也可以通过SQL查询获取字段默认值的名称:
SELECT o.name FROM sys.columns c
JOIN sys.objects o ON c.default_object_id = o.[object_id]
WHERE c.[object_id] = object_id('T_PUR_POORDER')
AND c.name = 'F_JAC_TEXT'
执行SQL,删除默认值:
ALTER TABLE T_PUR_POORDER DROP CONSTRAINT DF__T_PUR_POO__F_JAC__1AD1AB1D
---------------------------------------------------------------------------------------------------------
【参考资料】
【系统运维.数据库.修改字段数据类型】https://vip.kingdee.com/article/127100414532910336
---------------------------------------------------------------------------------------------------------
【金蝶云星空BOS二次开发案例演示】https://vip.kingdee.com/article/94751030918525696
二开案例.单据设计.文本字段编辑长度突破2000的限制
本文2024-09-23 04:20:02发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-164633.html