找回密码
 注册账号

QQ登录

只需一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

初学者课程:T3自学|T6自学|U8自学软件下载课件下载工具下载资料:通资料|U8资料|NC|培训|年结积分规则 | 使用常见问题Q&A
知识库:U8 | | NC | U9 | OA | 政务U8|U9|NCC|NC65|NC65客开|NCC客开新手必读 | 任务 | 快速增金币用友QQ群[微信群]
查看: 3082|回复: 5

[求助] 采购订单触发器创建单据好用,修改单据不好用

[复制链接]
发表于 2009-6-12 15:39:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册账号

×
专家们好:
    我的U871采购和委外的触发器有点问题,创建单据好用,修改或变更单据不好用。触发器的作用是表体添加了一个自定义项单重价格和总重,使价税合计=单重价格x总重,单重价格手动输入,总重=(存货自定义项)单重x数量


CREATE TRIGGER po ON [dbo].[po_podetails]
FOR INSERT
AS
declare @a int
select @a=inserted.isum form inserted
begin
if @a is null
begin
update po_podetails set po_podetails.cdefine26=po_podetails.iquantity*inventory.cinvdefine13
from po_podetails inner join inventory on po_podetails.cinvcode=inventory.cinvcode
inner join inserted on po_podetails.id=inserted.id
update po_podetails set
po_podetails.isum=po_podetails.cdefine27*po_podetails.cdefine26,
po_podetails.itaxprice=(po_podetails.cdefine27*po_podetails.cdefine26)/po_podetails.iquantity,
po_podetails.iunitprice=(po_podetails.cdefine27*po_podetails.cdefine26/po_podetails.iquantity)/1.17,
po_podetails.imoney=(po_podetails.cdefine27*po_podetails.cdefine26)-(po_podetails.cdefine27*po_podetails.cdefine26/1.17)*0.17,
po_podetails.itax=(po_podetails.cdefine27*po_podetails.cdefine26/1.17)*0.17,
po_podetails.inatmoney=(po_podetails.cdefine27*po_podetails.cdefine26)-(po_podetails.cdefine27*po_podetails.cdefine26/1.17)*0.17,
po_podetails.inattax=(po_podetails.cdefine27*po_podetails.cdefine26/1.17)*0.17,
po_podetails.inatsum=po_podetails.cdefine27*po_podetails.cdefine26
from po_podetails inner join inserted on po_podetails.id=inserted.id
end
end
现在遇到的问题是:创建单据时,保存,好用,修改或变更单据时再保存,价税合计不变。 请专家指点。
 楼主| 发表于 2009-6-12 15:40:30 | 显示全部楼层
CREATE TRIGGER po ON [dbo].[po_podetails]
FOR INSERT
AS
declare @a int
select @a=inserted.isum form inserted
begin
if @a is null
begin
update po_podetails set po_podetails.cdefine26=po_podetails.iquantity*inventory.cinvdefine13
from po_podetails inner join inventory on po_podetails.cinvcode=inventory.cinvcode
inner join inserted on po_podetails.id=inserted.id
update po_podetails set
po_podetails.isum=po_podetails.cdefine27*po_podetails.cdefine26,
po_podetails.itaxprice=(po_podetails.cdefine27*po_podetails.cdefine26)/po_podetails.iquantity,
po_podetails.iunitprice=(po_podetails.cdefine27*po_podetails.cdefine26/po_podetails.iquantity)/1.17,
po_podetails.imoney=(po_podetails.cdefine27*po_podetails.cdefine26)-(po_podetails.cdefine27*po_podetails.cdefine26/1.17)*0.17,
po_podetails.itax=(po_podetails.cdefine27*po_podetails.cdefine26/1.17)*0.17,
po_podetails.inatmoney=(po_podetails.cdefine27*po_podetails.cdefine26)-(po_podetails.cdefine27*po_podetails.cdefine26/1.17)*0.17,
po_podetails.inattax=(po_podetails.cdefine27*po_podetails.cdefine26/1.17)*0.17,
po_podetails.inatsum=po_podetails.cdefine27*po_podetails.cdefine26
from po_podetails inner join inserted on po_podetails.id=inserted.id
end
end
现在遇到的问题是:创建单据时,保存,好用,修改或变更单据时再保存,价税合计不变。请专家指点。
发表于 2009-6-12 15:53:28 | 显示全部楼层
FOR INSERT,再加UPDATA
 楼主| 发表于 2009-6-15 10:28:27 | 显示全部楼层
不好用啊,insert应该是创建单据,updata应该是修改或变更单据的,试过了不好用,不知道为什么
发表于 2009-6-15 10:37:51 | 显示全部楼层
if @a is null,再看看,修改和变更是@a应该不是NULL了吧。
发表于 2009-6-24 16:56:31 | 显示全部楼层
楼上正解,更改时 @a 肯定不是 null 了,楼主查查看
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

QQ|站长微信|Archiver|手机版|小黑屋|用友之家 ( 蜀ICP备07505338号|51072502110008 )

GMT+8, 2024-11-23 10:48 , Processed in 0.048147 second(s), 9 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表