问题:模块如何增加多选单据的字段?
添加方法:
示例说明:以模块“自定义表单2”增加多选“自定义表单1”为例 1. 在Navicat for mysql 中执行下面的存储过程脚本,该存储过程脚本用于根据参数将字段修改为多选单据的字段。
DROP PROCEDURE IF EXISTS `reset_fieldtoselectmore`; delimiter || CREATE PROCEDURE `reset_fieldtoselectmore`( tmp_fieldid INT(19), tmp_selectmodule VARCHAR(100) ) BEGIN
UPDATE ld_field SET uitype=125 WHERE fieldid=tmp_fieldid;
SET @my_fieldname=(SELECT fieldname FROM ld_field WHERE fieldid=tmp_fieldid ORDER BY fieldid DESC LIMIT 1); SET @my_tabid=(SELECT tabid FROM ld_field WHERE fieldid=tmp_fieldid ORDER BY fieldid DESC LIMIT 1); SET @my_module=(SELECT `name` FROM ld_tab WHERE tabid=@my_tabid LIMIT 1);
IF IFNULL(@my_fieldname,'')<>'' THEN IF NOT EXISTS (SELECT 1 FROM ld_shareequally WHERE fieldname=@my_fieldname AND module=@my_module) THEN SET @my_default=1; SET @my_sequence=1; ELSE SET @my_default=0; SET @my_sequence=(SELECT MAX(sequence)+1 FROM ld_shareequall WHERE fieldname=@my_fieldname AND module=@my_module); END IF;
INSERT INTO ld_shareequally(fieldname,module,entitytype,`default`,presence,sequence) SELECT @my_fieldname,@my_module,tmp_selectmodule,@my_default,0,@my_sequence FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM ld_shareequally WHERE fieldname=@my_fieldname AND module=@my_module AND entitytype=tmp_selectmodule); END IF; end || delimiter;
2. 在“自定义表单2”页面设置中增加“文本区域”类型的字段
3.在Navicat for mysql 中执行下面的语句查出新增字段的 fieldid SELECT * FROM ld_field ORDER BY fieldid DESC LIMIT 10
4. 在Navicat for mysql 中继续执行下面的语句将字段改造为多选单据字段 CALL reset_fieldtoselectmore(2615,'CustomForm01');
说明:其中参数 2615 是新增字段的ID,CustomForm01 是备选模块的模块名称,可在相应单据列表界面通过浏览器地址栏查看
5. 最后“清除缓存”之后即可在
6. 如果是V7.9.9.11版本,请打附件所示的补丁修正多选字段在查看详情界面显示样式
|