找回密码
 注册账号

QQ登录

只需一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

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

[求助] U8.版本13.0.想做个触发器

[复制链接]
发表于 2019-6-27 13:07:47 | 显示全部楼层 |阅读模式

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

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

×
U8.版本13.0.想做个触发器
在产成品入库单时,在保存产成品入库单时系统存在相同批号,则提醒已经有相同批号存在了。允许保存,但是有提醒
应该对那个表,那个字段触发啊。
我们产成品的批号是唯一值。
发表于 2019-6-29 09:34:31 | 显示全部楼层
你直接在产品入库单中写触发器即可,把提示抛出。
回复 点赞 拍砖

使用道具 举报

发表于 2019-7-1 10:46:00 | 显示全部楼层
变通办法在单据设个字段用触发器会写批号是否重复
回复 点赞 拍砖

使用道具 举报

发表于 2019-7-2 15:14:29 | 显示全部楼层
这个会不会影响后面的效率啊,数据多了,要逐一判断一下    谢呈帆
回复 点赞 拍砖

使用道具 举报

发表于 2019-7-2 20:29:55 | 显示全部楼层
个会不会影响后面的效率啊,数据多了,要逐一判断一下
回复 点赞 拍砖

使用道具 举报

发表于 2019-7-4 16:38:10 | 显示全部楼层
你的需求应该做成批号规则,同时禁止批号编辑,从逻辑上保证批号唯一,而不是用触发器来事后判断。
回复 点赞 拍砖

使用道具 举报

发表于 2019-8-1 12:59:54 | 显示全部楼层
可以参照这个触发器示例:

CREATE TRIGGER [dbo].[DispatchLists_INSERT]
   ON  [dbo].[DispatchLists]
   AFTER INSERT,UPDATE
AS
declare
@string Varchar(200),
@DLID varchar(50),
@cCusCode varchar(50),
@cInvCode varchar(50),
@cBatch varchar(50),
@cVenCode varchar(50),
@cVenName varchar(50),
@cout1 int,
@cout2 int
BEGIN
select @DLID=DLID,@cCusCode=cDefine33,@cInvCode=cInvCode,@cBatch=cBatch,@cVenName=cbatchproperty6,@cVenCode=cbatchproperty7 from inserted
select @cout1=count(*) from dbo.V_EK_CUS_CINV_VEN where cCusCode=@cCusCode and cInvCode=@cInvCode
select @cout2=count(*) from dbo.V_EK_CUS_CINV_VEN where cCusCode=@cCusCode and cInvCode=@cInvCode and cVenCode=@cVenCode
-- 是否控制产品
IF @cout1>0
BEGIN
        -- 插入触发
        IF EXISTS(SELECT 1 FROM inserted) AND NOT EXISTS(SELECT 1 FROM deleted)
        BEGIN
                if @cout2 <1
                begin
                        SET @string=char(10)+'产品('+convert(varchar, @cInvCode)+')对应批次号('+convert(varchar, @cBatch)+')的供货单位('+convert(varchar, @cVenName)+')在客户BOM中不存在,请重新指定供货单位后保存!'
                        RAISERROR (@string,16,1)
                end
        END
        -- 更新触发
        IF EXISTS(SELECT 1 FROM inserted) AND EXISTS(SELECT 1 FROM deleted)
        BEGIN
                if @cout2 <1
                begin
                        SET @string=char(10)+'产品('+convert(varchar, @cInvCode)+')对应批次号('+convert(varchar, @cBatch)+')的供货单位('+convert(varchar, @cVenName)+')在客户BOM中不存在,请重新指定供货单位后保存!'
                        RAISERROR (@string,16,1)
                end
        END
END
END
GO
回复 点赞 拍砖

使用道具 举报

发表于 2019-8-7 11:39:59 | 显示全部楼层
学习   学习   学习   
回复 点赞 拍砖

使用道具 举报

发表于 2019-8-7 13:41:47 | 显示全部楼层
触发器我也是懵懵懂懂的。。。。
回复 点赞 拍砖

使用道具 举报

发表于 2020-4-24 10:25:24 | 显示全部楼层
if
(select count(*) from rdrecord a inner join rdrecords b on a.id=b.id  where cvouchtype='10' and cbatch=@zph and iquantity>0)>1
begin
select @cfree=inserted.cbatch from inserted
set @zph=@cfree+'批次号重复!'  
                        RAISERROR (@zph, 16, 10)  
SET NOCOUNT OFF
END
这是U8老版本的,以前供应链出入库单据全部放在rdrecord/s表,现在根据cvouchtype做了拆分,产品入库单是rdrecord10/s。
回复 点赞 拍砖

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

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

GMT+8, 2024-4-26 22:07 , Processed in 0.043786 second(s), 10 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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