二开案例.单据设计.文本字段编辑长度突破2000的限制

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

二开案例.单据设计.文本字段编辑长度突破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的限制

【应用场景】文本字段编辑长度突破2000的限制。背景说明:文本字段出于性能考虑,BOS设计器默认给的字段类型为nvarchar,且长度不能超过200...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息