找回密码
 注册账号

QQ登录

只需一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

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

U872触发器价格数据库自动取用存货编码

[复制链接]
 楼主| 发表于 2012-4-27 11:08:15 | 显示全部楼层

不好意思,令开贴没有100积分悬赏了

不过修正后的还是不执行呢,我的是U872

点评

解决了就好了  详情 回复 发表于 2012-6-30 21:53
自己把两个触发器整理合并!  发表于 2012-4-27 11:15
回复

使用道具 举报

发表于 2012-5-3 15:37:48 | 显示全部楼层
jiebozhang 发表于 2012-4-27 10:01
是的,这个是从供需政策LP/PE取数,更新到存货自定义项1

USE

看这情况应该没什么冲突,说不好。不过可以建议你将这两个触发器合到一起

点评

这样行吗? CREATE TRIGGER [dbo].[trig_fin-invprice ] ON [dbo]. FOR INSERT,UPDATE AS BEGIN DECLARE @cInvCode VARCHAR(20),@cInvCCode VARCHAR(12),@cInvDefine6 VARCHAR(60),@cInvDefine1 VARC  详情 回复 发表于 2012-5-7 14:58
回复

使用道具 举报

 楼主| 发表于 2012-5-7 14:58:38 | 显示全部楼层
deerjam 发表于 2012-5-3 15:37
看这情况应该没什么冲突,说不好。不过可以建议你将这两个触发器合到一起

这样行吗?
CREATE TRIGGER [dbo].[trig_fin-invprice ]
ON [dbo].[inventory]
FOR INSERT,UPDATE
AS

  BEGIN
    DECLARE  @cInvCode VARCHAR(20),@cInvCCode VARCHAR(12),@cInvDefine6 VARCHAR(60),@cInvDefine1 VARCHAR(12),@cSRPolicy VARCHAR(12)
    SELECT @cinvcode = cinvcode
    FROM   inserted
    SELECT @cInvCCode = cinvccode,@cInvDefine6 = cinvdefine6,@cSRPolicy = cSRPolicy,@cInvDefine1 = cinvdefine1
    FROM   inventory
    WHERE  cinvcode = @cinvcode

        BEGIN
          BEGIN
           IF NOT EXISTS (SELECT cinvdefine1
                       FROM   Inventory
                       WHERE  cinvdefine1 = @cSRPolicy)

      UPDATE Inventory
      SET    cInvDefine1 = @cSRPolicy
      FROM   Inventory
    END
        END

    IF LEFT(@cInvCCode,2) = '12'
       AND @cInvDefine6 = '外协'
      BEGIN
        IF NOT EXISTS (SELECT cinvcode
                       FROM   fin_invprice
                       WHERE  cinvcode = @cinvcode)
          BEGIN
            INSERT INTO fin_invprice(cinvcode)
            VALUES     (@cinvcode)
          END
      END
  END

点评

我没测试啊,你试一下吧在你那环境上。  详情 回复 发表于 2012-5-7 16:32
回复

使用道具 举报

发表于 2012-5-7 16:32:25 | 显示全部楼层
jiebozhang 发表于 2012-5-7 14:58
这样行吗?
CREATE TRIGGER [dbo].[trig_fin-invprice ]
ON [dbo].
  1. CREATE TRIGGER [dbo].[trig_fin-invprice ]
  2. ON [dbo].[inventory]
  3. FOR INSERT,UPDATE
  4. AS
  5. BEGIN
  6. DECLARE @cInvCode VARCHAR(20),@cInvCCode VARCHAR(12),@cInvDefine6 VARCHAR(60)
  7. SELECT @cinvcode = cinvcode
  8. FROM inserted
  9. SELECT @cInvCCode = cinvccode,@cInvDefine6 = cinvdefine6
  10. FROM inventory
  11. WHERE cinvcode = @cinvcode
  12. UPDATE inventory
  13. SET cinvdefine1 = csrpolicy
  14. WHERE cinvcode = @cinvcode
  15. IF LEFT(@cInvCCode,2) = '12'
  16. AND @cInvDefine6 = '外协'
  17. BEGIN
  18. IF NOT EXISTS (SELECT 1
  19. FROM fin_invprice
  20. WHERE cinvcode = @cinvcode)
  21. BEGIN
  22. INSERT INTO fin_invprice
  23. (cinvcode)
  24. VALUES (@cinvcode)
  25. END
  26. END
  27. END
复制代码
我没测试啊,你试一下吧在你那环境上。

点评

再就是有个纠结的问你题,SET cinvdefine1 = csrpolicy是没有限制条件的,还是得把触发器写成2个吧  详情 回复 发表于 2012-5-8 14:33
回复

使用道具 举报

 楼主| 发表于 2012-5-8 14:33:48 | 显示全部楼层
deerjam 发表于 2012-5-7 16:32
我没测试啊,你试一下吧在你那环境上。

{:soso_e109:}

数据库可能已经存在相同的编码等

数据库可能已经存在相同的编码等

再就是有个纠结的问你题,SET cinvdefine1 = csrpolicy是没有限制条件的,还是得把触发器写成2个吧

点评

语句里面没有限制条件啊  详情 回复 发表于 2012-5-9 09:09
回复

使用道具 举报

发表于 2012-5-9 09:09:54 | 显示全部楼层
jiebozhang 发表于 2012-5-8 14:33
再就是有个纠结的问你题,SET cinvdefine1 = csrpolicy是没有限制条件的,还是得把触发器 ...

语句里面没有限制条件啊

点评

为什么会出现重码提示呢? 代码的话我就把select 1 改为 select cinvcode 应该没有问题的  详情 回复 发表于 2012-5-10 10:36
回复

使用道具 举报

 楼主| 发表于 2012-5-10 10:36:59 | 显示全部楼层
deerjam 发表于 2012-5-9 09:09
语句里面没有限制条件啊

为什么会出现重码提示呢?
代码的话我就把select 1  改为 select cinvcode
应该没有问题的

点评

拜托,触发器报错不会这样提示的,这样提示就说明你新增的存货编码就是重复了  详情 回复 发表于 2012-5-10 13:11
回复

使用道具 举报

发表于 2012-5-10 13:11:47 | 显示全部楼层
jiebozhang 发表于 2012-5-10 10:36
为什么会出现重码提示呢?
代码的话我就把select 1  改为 select cinvcode
应该没有问题的

拜托,触发器报错不会这样提示的,这样提示就说明你新增的存货编码就是重复了
回复

使用道具 举报

发表于 2012-5-11 16:54:35 | 显示全部楼层
.........................
回复

使用道具 举报

发表于 2012-5-25 08:18:32 | 显示全部楼层
不懂数据库,有点看不懂
回复

使用道具 举报

发表于 2012-5-25 08:37:50 | 显示全部楼层
学习一下                          
回复

使用道具 举报

发表于 2012-6-30 14:12:42 | 显示全部楼层
USE [UFDATA_012_2012]
GO
/****** Object:  Trigger [dbo].[trig_Inventory]    Script Date: 04/24/2012 20:47:32 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create TRIGGER [dbo].[trig_fin-invprice ] ON [dbo].[Inventory]
FOR INSERT,UPDATE
AS
BEGIN
    UPDATE a
    SET    a.cInvCode = b.cInvCode    FROM fin_invprice a
      right JOIN Inventory b
        on a.cinvcode=b.cinvcode        and b.cInvCCode like '12%'
        and b.cInvDefine6 = '外协'
        and a.cinvcode not in (b.cinvcode)
END
--你的触发器写得也太怪了,你可参照7楼的方法
回复

使用道具 举报

发表于 2012-6-30 19:20:19 | 显示全部楼层
看起来有点复杂哦        
回复

使用道具 举报

发表于 2012-6-30 21:53:36 | 显示全部楼层
jiebozhang 发表于 2012-4-27 11:08
不好意思,令开贴没有100积分悬赏了

不过修正后的还是不执行呢,我的是U872

解决了就好了
回复

使用道具 举报

发表于 2012-8-6 14:03:41 | 显示全部楼层
没有接触过,学习了
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-8 08:26 , Processed in 0.025441 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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