泛微Ecology8明细表对主表赋值

1.需求及效果

1.1 需求

在明细表中的项目经理,可以将值赋值给主表中的项目经理来作为审批人员
在这里插入图片描述

1.2 效果

在申请人保存或者提交后将明细表中的人名赋值给主表中对应的值

2.思路与实现

在通过js测试后,不能够百分百的赋值成功,只能在数据库中写触发器来确保每次都能够赋值成功。
注意点:1.明细表中的项目经理可能是多个不同的人,所以需要将值都取出来,写到同一行,并用逗号隔开,确保与主表中的多人力资源在数据库中存储的格式相同。
2.我这里的项目经理是汉字,并不是存储的人力资源字段对应的数字,所以还需要从HRmresource表中获取人名对应的id

/*
此触发器用来使用明细表中的项目经理赋值给主表中的项目经理及申请人带出人力资源部考勤工时
1.明细表中的项目经理可能存在多个,所以需要多对一
2.主表中的项目经理是int类型,需要用HrmResource转化
3.申请人带出人力资源部导入的考勤工时
*/
CREATE TRIGGER trg_yyhc_xxgs
ON dbo.formtable_main_201 
AFTER INSERT,UPDATE
AS 
BEGIN
    SET NOCOUNT ON;  --不返回结果行数

    -- 声明变量
    DECLARE @requestID INT,  --请求id
			@sqr INT,		 --申请人
			@name NVARCHAR(100), --项目工时中的name
			@gs DECIMAL(10,4),   --工时
			@xmjl NVARCHAR(100),    --项目经理(项目负责人)
			@id INT;  --主表id
    -- 查询插入的数据
    SELECT @requestID = i.requestId, @sqr = i.sqr,@id=i.id FROM inserted i;

    -- 获取姓名
    SELECT @name = hr.lastname FROM dbo.HrmResource hr WHERE hr.id = @sqr;

    -- 获取工时值
    SELECT @gs = yy.gs FROM dbo.yyhc_yybgg yy WHERE yy.name = @name;

	--根据id获取明细表中的项目经理
	SELECT @xmjl = STUFF((SELECT DISTINCT ',' + CAST(hr.id AS NVARCHAR)
                      FROM formtable_main_201_dt1 dt
                      JOIN HrmResource hr ON dt.xmjl = hr.lastname
                      WHERE dt.mainid = @id
                      FOR XML PATH('')), 1, 1, '')
	
    -- 更新数据
	--0709日更改,不是项目成员无法更新数据,没有项目经理即不能提交
	IF EXISTS (SELECT 1 FROM yyhc_xmcylb WHERE name=@name)
	BEGIN
    UPDATE m SET m.rlzybtggs = @gs,m.xmfzr=@xmjl FROM dbo.formtable_main_201 m WHERE m.requestId = @requestID;
	END 
END;

3.结语

可以通过触发器来完成明细表中的值赋值给对应的主表的值,当然还可以建一些表通过匹配给他们赋值,也会大大减少填写的内容。

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-19 02:16:02       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-19 02:16:02       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-19 02:16:02       58 阅读
  4. Python语言-面向对象

    2024-07-19 02:16:02       69 阅读

热门阅读

  1. ThreadPoolExecutor拒绝策略

    2024-07-19 02:16:02       24 阅读
  2. Redis 散列

    2024-07-19 02:16:02       18 阅读
  3. C# —— HashTable

    2024-07-19 02:16:02       21 阅读
  4. 4 Ajax

    2024-07-19 02:16:02       20 阅读
  5. GNU/Linux - U-BOOT的GPIO command

    2024-07-19 02:16:02       19 阅读
  6. 一篇文章帮你彻底搞懂剩余运算符!!

    2024-07-19 02:16:02       20 阅读
  7. selenium 之 css定位

    2024-07-19 02:16:02       21 阅读
  8. Elasticsearch SQL:解锁Elasticsearch数据的新方式

    2024-07-19 02:16:02       25 阅读
  9. 力扣第十二题——整数转罗马数字

    2024-07-19 02:16:02       22 阅读
  10. Qt 实战(6)事件 | 6.3、自定义事件

    2024-07-19 02:16:02       25 阅读
  11. 数据库(Database,简称DB)介绍

    2024-07-19 02:16:02       20 阅读
  12. x264、x265、libaom 编码对比实验

    2024-07-19 02:16:02       21 阅读