会员名称: 登录密码: (找回密码) 登录 会员注册

分类

问题
上个主题 下个主题
主题:!求触发器!
avatar
苹果
企业管理 行业
Ta擅长:
金蝶K/3(13),基础(5) 本周回答(0),本月回答(0)
发贴时间:2009-7-10 11:00:33   完成时间: 2009-7-13 16:31:20
赠分:10      回答:4   已经到期    

问题描述:

生产部在做任务单汇报时需要按分录统计生产效率,这个需求比较容易解决,可以通过新增列来设公式处理。但还要按汇总数量计算出本次汇报的平均生产效率。具体可参考下附图。请教各位如何写这个触发器?


只有努力才能做到更好!
附件:hb.JPG
avatar
潜水的鱼
企业管理 行业
Ta擅长:
金蝶K/3(4),财务(2) 本周回答(0),本月回答(0)
回答时间:2009-7-10 23:12:23

create trigger jf
on ICMORptEntry
for insert,update
as
begin

update icmorpt set fheadselfj1111=(select sum(fentryselfj1144) from inserted)

/(select sum(fentryselfj1146) from inserted )

from inserted

where inserted.finterid=icmorpt.finterid

end

哥们用这个,注意触发器从一张表更新另张表时,先和查询分析器判断一下到底哪张表先更新然后再设置触发器在哪张表上触发
还有触发器一定要用inserted代表先更新的那张表.
不清楚的话去看SQLServer的帮助,我是讲不清
修改时间:2009-7-10 23:16:05


愚蚁
发文者评价: (共获积分:10
 
网友评价: 100%       0%     (目前有 2 人评价)
你的评价:
其他回答
avatar
苹果
企业管理 行业
Ta擅长:
金蝶K/3(13),基础(5) 本周回答(0),本月回答(0)
回答时间:2009-7-10 14:00:18

编写触发器如下:

create trigger jf
on ICMORpt
for insert,update
as
begin
update t1 set t1.fheadselfj1111=(select sum(fentryselfj1144) from t2)/(select sum(fentryselfj1146) from t2)
from ICMORpt t1,ICMORptEntry t2
where t1.FInterID=t2.FInterID
end


调试没问题,但在做任务单汇报,保存时,系统提示无法找到t2表。
请各位帮忙看看程序有什么问题。谢谢!


只有努力才能做到更好!
 
avatar
苹果
企业管理 行业
Ta擅长:
金蝶K/3(13),基础(5) 本周回答(0),本月回答(0)
回答时间:2009-7-10 17:46:58

期待有位路人能帮忙分析下原因,谢谢!


只有努力才能做到更好!
 
avatar
honest
IT 行业
Ta擅长:
金蝶K/3(119),制造(75) 本周回答(1),本月回答(2)
回答时间:2009-7-10 21:36:14

感觉触发器的语法存在一些问题, 我们改造了一下,如下SQL供参考:

create trigger jf
on ICMORpt
for insert,update
as
begin
update t1 set t1.fheadselfj1111=t2.fentryselfj1144/t2.fentryselfj1146
from ICMORpt t1,(select FInterID, sum(fentryselfj1144) as fentryselfj1144,sum(fentryselfj1146) as fentryselfj1146 from ICMORptEntry group by FInterID) t2
where t1.FInterID=t2.FInterID and t2.fentryselfj1146<>0

end


以上回复供参考,如有任何疑问或建议,请即时回复交流,感谢您对金蝶社区的支持!
View as RSS news feed in XML