泛微OA更换字段

节选自:https://mp.weixin.qq.com/s/1I8QYxDuRJ45M9zuImc8bA

一、背景介绍:

    在日常的流程使用的过程中会有一种情况,那就是被引用的字段是无法再次进行编辑的。

    要想把这个被引用的字段进行替换的话,通常的办法是需要一个新增字段,并且在各个节点模版里面把旧的字段拿掉,放上新的字段,才能实现更换字段的目的,这就造成了极大的工作量。

    该技巧主要是通过操作数据库的方式来实现新旧字段的替换,以减轻工作量。

二、功能介绍:

    需要变动的表分为逻辑表和物理表;

-- 逻辑表存的OA表单管理界面显示的字段信息,在workflow_billfield中,根据fieldid可以查到;

-- 物理表指实际数据库上的表,比如formtable_main_xxx。

三、具体的步骤:

  1. 先在OA表单管理上直接新增字段,为了便于描述,我们这里将字段定义为Anew,将要替换掉的旧字段定义为A。

  2. 数据库查询workflow_billfield表中A和Anew的数据,然后对比一下两行数据之间的区别,把Anew记录update给A的记录。(除了uuid字段,这个是每个字段唯一的)(谨慎点可以备下份)

  3. formtable_main_xxx物理表中,查看表结构,确认Anew的字段类型,然后执行Alter,把A的字段类型改成和Anew一样。(如果有历史数据,需根据情况判断处理)

  4. 数据库操作完之后,需要刷新下缓存,两种方式:访问缓存管理界面点击重新加载配置或直接重启OA。

  5. 就会发现流程表单上A字段已经替换为Anew字段了。第1步在表单管理界面加的Anew就可以直接删掉。

【相关sql可以参考附录里面的内容】

四、附录

步骤中涉及的sql语句可参考:

--如果修改字段类型涉及到物理表数据类型,需要修改物理表

    --修改【币别】字段为系统标准币别

    update workflow_billfield 

    set fielddbtype='int',fieldhtmltype='3',type='12'  

    where id=字段id

    --修改【部门】字段为系统标准部门

    update workflow_billfield

    set fielddbtype='int',fieldhtmltype='3',type='4'

    where id=字段id

    --修改字段为单行文本

    update workflow_billfield

    set fielddbtype='varchar(300)',fieldhtmltype='1',type='1'

    where id=字段id

    --修改字段为整数

    update workflow_billfield

    set fielddbtype='int',fieldhtmltype='1',type='2'

    where id=字段id

    --修改字段为两位小数

    update workflow_billfield

    set fielddbtype='decimal(38,2)',fieldhtmltype='1',type='3'

    where id=字段id

    --修改字段为多行文本

    update workflow_billfield

    set fielddbtype='text',fieldhtmltype='2',type='1'

    where id=字段id

    --修改字段为单选系统浏览按钮

    update workflow_billfield

    set fielddbtype='int',fieldhtmltype='3',type='16'

    where id=字段id

    --修改字段为多选系统流程浏览按钮

    update workflow_billfield

    set fielddbtype='text',fieldhtmltype='3',type='152'

    where id=字段id

    --修改字段为多选系统归档流程浏览按钮

    update workflow_billfield

    set fielddbtype='varchar(4000)',fieldhtmltype='3',type='171'

    where id=字段id

    --修改字段为自定义浏览按钮

    update workflow_billfield

    set fielddbtype='browser.浏览按钮标识',fieldhtmltype='3',type='161' --type=161 是单选   162是多选

    where id=字段id

---涉及到物理表数据类型,调整语法参考

alter table (table_name) alter column (column name)  (type)

--update联合查询语法

UPDATE table1 inner/left/right join table2/(select columns from table3

[inner/left/right join on condition] [where conditions]) as t3

ON condition

SET column1 = value1,column2 = value2,...

[WHERE conditions];

update node1

set FullName=node3. FullName from node1, node3

where node1. Parentld=node3. Parentld AND node1.[ Level]=node3.[ Level]

--修改物理表列名

exec sp_rename 'formtable_main_665.bckhfftzje','kehProposalAmount' 

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值