要求:导入的时候上面的触发器是按照项目ID和价格基数ID导入的,现在要求EXCEL中的是它们的值,然后导入自动显示ID

解决方案 »

  1.   

     update T_土建装饰工程造价指标和指数 set 项目ID=@xmbh,项目=@项目,报告期数量和价格=@报告期数量和价格,报告期数量定额取定价=@报告期数量定额取定价, 价格基数ID=@价格基数ID where 项目=@项目 and 价格基数ID=@价格基数ID 
    ---
    至少得加一个where 呀
     update T_土建装饰工程造价指标和指数 set 项目ID=@xmbh,项目=@项目,报告期数量和价格=@报告期数量和价格,报告期数量定额取定价=@报告期数量定额取定价, 价格基数ID=@价格基数ID where 项目=@项目 and 价格基数ID=@价格基数ID 
    where 项目=@项目 and 价格基数ID=@价格基数ID
    另外直接换成after吧
      

  2.   

    alter TRIGGER Tig_Insert土建装饰工程造价指标和指数_导入 
    ON dbo.T_土建装饰工程造价指标和指数_导入 
    after INSERT 
    AS 
    DECLARE @项目ID int 
    DECLARE @项目 VARCHAR(50) 
    DECLARE @报告期数量和价格 decimal(18,3) 
    DECLARE @报告期数量定额取定价 decimal(18,3) 
    DECLARE @价格基数ID int select @项目ID=项目ID,@项目=项目,@报告期数量和价格=报告期数量和价格, @报告期数量定额取定价=报告期数量定额取定价, @价格基数ID=价格基数ID from inserted declare @xmbh int 
    select @xmbh=ID from T_工程概况 if(exists(select 1 from T_土建装饰工程造价指标和指数 a,inserted i where a.项目=i.项目 and a.价格基数ID=i.价格基数ID)) 
      begin 
        update a 
         set a.项目ID=t.id,a.项目=i.项目,a.报告期数量和价格=i.报告期数量和价格,
           a.报告期数量定额取定价=i.报告期数量定额取定价, a.价格基数ID=i.价格基数ID 
        from T_土建装饰工程造价指标和指数 a
        left join inserted i on a.项目=i.项目 and a.价格基数ID=i.价格基数ID 
        left join T_工程概况 t on 1 =1
      end 
    else 
      begin 
        INSERT INTO T_土建装饰工程造价指标和指数(项目ID,项目, 报告期数量和价格, 报告期数量定额取定价,价格基数ID) 
        select t.id,i.项目,i.报告期数量和价格,i.报告期数量定额取定价,i.价格基数ID
        from  T_土建装饰工程造价指标和指数 a
        left join inserted i on a.项目=i.项目 and a.价格基数ID=i.价格基数ID 
        left join T_工程概况 t on 1 =1  end 
      

  3.   

    这个是在导入的时候用,只能是触发器了,我导入的时候是按照项目ID和价格基数ID导入的,现在要求EXCEL中的是它们的名称,我做了一个,导不进去,你帮我看看
      

  4.   


    加一个条件,随手的你试试alter TRIGGER Tig_Insert土建装饰工程造价指标和指数_导入 
    ON dbo.T_土建装饰工程造价指标和指数_导入 
    after INSERT 
    AS 
    DECLARE @项目ID int 
    DECLARE @项目 VARCHAR(50) 
    DECLARE @报告期数量和价格 decimal(18,3) 
    DECLARE @报告期数量定额取定价 decimal(18,3) 
    DECLARE @价格基数ID int select @项目ID=项目ID,@项目=项目,@报告期数量和价格=报告期数量和价格, @报告期数量定额取定价=报告期数量定额取定价, @价格基数ID=价格基数ID from inserted declare @xmbh int 
    select @xmbh=ID from T_工程概况 if(exists(select 1 from T_土建装饰工程造价指标和指数 a,inserted i where a.项目=i.项目 and a.价格基数ID=i.价格基数ID)) 
      begin 
        update a 
         set a.项目ID=t.id,a.项目=i.项目,a.报告期数量和价格=i.报告期数量和价格,
           a.报告期数量定额取定价=i.报告期数量定额取定价, a.价格基数ID=i.价格基数ID 
        from T_土建装饰工程造价指标和指数 a
        left join inserted i on a.项目=i.项目 and a.价格基数ID=i.价格基数ID 
        left join T_工程概况 t on 1 =1
      end 
    else 
      begin 
        INSERT INTO T_土建装饰工程造价指标和指数(项目ID,项目, 报告期数量和价格, 报告期数量定额取定价,价格基数ID) 
        select t.id,i.项目,i.报告期数量和价格,i.报告期数量定额取定价,i.价格基数ID
        from  T_土建装饰工程造价指标和指数 a
        left join inserted i on a.项目=i.项目 and a.价格基数ID=i.价格基数ID 
        left join T_工程概况 t on 1 =1
        where not exists(selet 1 from T_土建装饰工程造价指标和指数 where 项目=i.项目 and 价格基数ID=i.价格基数ID)
      end 
      

  5.   

    DECLARE @项目编号 int 
    DECLARE @项目 VARCHAR(50) 
    DECLARE @报告期数量和价格 decimal(18,3) 
    DECLARE @报告期数量定额取定价 decimal(18,3) 
    DECLARE @价格基数 VARCHAR(50)刚才那个本来三行的导入,现在导入了五六十行
      

  6.   

    DECLARE @项目编号 VARCHAR(50) 
    DECLARE @项目 VARCHAR(50) 
    DECLARE @报告期数量和价格 decimal(18,3) 
    DECLARE @报告期数量定额取定价 decimal(18,3) 
    DECLARE @价格基数 VARCHAR(50) 
      

  7.   

    alter TRIGGER Tig_Insert土建装饰工程造价指标和指数_导入 
    ON dbo.T_土建装饰工程造价指标和指数_导入 
    after INSERT 
    AS 
    DECLARE @项目ID int 
    DECLARE @项目 VARCHAR(50) 
    DECLARE @报告期数量和价格 decimal(18,3) 
    DECLARE @报告期数量定额取定价 decimal(18,3) 
    DECLARE @价格基数ID int select @项目ID=项目ID,@项目=项目,@报告期数量和价格=报告期数量和价格, @报告期数量定额取定价=报告期数量定额取定价, @价格基数ID=价格基数ID from inserted declare @xmbh int 
    select @xmbh=ID from T_工程概况 if(exists(select 1 from T_土建装饰工程造价指标和指数 a,inserted i where a.项目=i.项目 and a.价格基数ID=i.价格基数ID)) 
      begin 
        update a 
         set a.项目ID=t.id,a.项目=i.项目,a.报告期数量和价格=i.报告期数量和价格,
           a.报告期数量定额取定价=i.报告期数量定额取定价, a.价格基数ID=i.价格基数ID 
        from inserted i 
        left join T_土建装饰工程造价指标和指数 a on a.项目=i.项目 and a.价格基数ID=i.价格基数ID 
        left join T_工程概况 t on 1 =1
      end 
    else 
      begin 
        INSERT INTO T_土建装饰工程造价指标和指数(项目ID,项目, 报告期数量和价格, 报告期数量定额取定价,价格基数ID) 
        select t.id,i.项目,i.报告期数量和价格,i.报告期数量定额取定价,i.价格基数ID
        from  inserted i 
        left join T_土建装饰工程造价指标和指数 a on a.项目=i.项目 and a.价格基数ID=i.价格基数ID 
        left join T_工程概况 t on 1 =1
        where not exists(selet 1 from T_土建装饰工程造价指标和指数 where 项目=i.项目 and 价格基数ID=i.价格基数ID)
      end 
      

  8.   

    alter TRIGGER Tig_Insert土建装饰工程造价指标和指数_导入 
    ON dbo.T_土建装饰工程造价指标和指数_导入 
    after INSERT 
    AS 
    DECLARE @项目ID int 
    DECLARE @项目 VARCHAR(50) 
    DECLARE @报告期数量和价格 decimal(18,3) 
    DECLARE @报告期数量定额取定价 decimal(18,3) 
    DECLARE @价格基数ID int select @项目ID=项目ID,@项目=项目,@报告期数量和价格=报告期数量和价格, @报告期数量定额取定价=报告期数量定额取定价, @价格基数ID=价格基数ID from inserted declare @xmbh int 
    select @xmbh=ID from T_工程概况 if(exists(select 1 from T_土建装饰工程造价指标和指数 a,inserted i where a.项目=i.项目 and a.价格基数ID=i.价格基数ID)) 
      begin 
        update a 
         set a.项目ID=t.id,a.项目=i.项目,a.报告期数量和价格=i.报告期数量和价格,
           a.报告期数量定额取定价=i.报告期数量定额取定价, a.价格基数ID=i.价格基数ID 
        from inserted i 
        left join T_土建装饰工程造价指标和指数 a on a.项目=i.项目 and a.价格基数ID=i.价格基数ID 
        left join T_工程概况 t on 1 =1
      end 
    else 
      begin 
        INSERT INTO T_土建装饰工程造价指标和指数(项目ID,项目, 报告期数量和价格, 报告期数量定额取定价,价格基数ID) 
        select t.id,i.项目,i.报告期数量和价格,i.报告期数量定额取定价,i.价格基数ID
        from  inserted i 
        left join T_土建装饰工程造价指标和指数 a on a.项目=i.项目 and a.价格基数ID=i.价格基数ID 
        left join T_工程概况 t on 1 =1
        where not exists(selet 1 from T_土建装饰工程造价指标和指数 where 项目=i.项目 and 价格基数ID=i.价格基数ID)
      end 
      

  9.   


    alter TRIGGER Tig_Insert土建装饰工程造价指标和指数_导入 
    ON dbo.T_土建装饰工程造价指标和指数_导入 
    after INSERT 
    AS 
    DECLARE @项目编号 VARCHAR(50) DECLARE @项目 VARCHAR(50) 
    DECLARE @报告期数量和价格 decimal(18,3) 
    DECLARE @报告期数量定额取定价 decimal(18,3) 
    DECLARE @价格基数ID int select @项目ID=项目ID,@项目=项目,@报告期数量和价格=报告期数量和价格, @报告期数量定额取定价=报告期数量定额取定价, @价格基数ID=价格基数ID from inserted declare @xmbh int
    select @xmbh=ID from T_工程概况 where 项目编号 = @项目编号if(exists(select 1 from T_土建装饰工程造价指标和指数 a,inserted i where a.项目=i.项目 and a.价格基数ID=i.价格基数ID)) 
      begin 
        update a 
         set a.项目ID=t.id,a.项目=i.项目,a.报告期数量和价格=i.报告期数量和价格,
           a.报告期数量定额取定价=i.报告期数量定额取定价, a.价格基数ID=i.价格基数ID 
        from inserted i 
        left join T_土建装饰工程造价指标和指数 a on a.项目=i.项目 and a.价格基数ID=i.价格基数ID 
        left join T_工程概况 t on 1 =1
      end 
    else 
      begin 
        INSERT INTO T_土建装饰工程造价指标和指数(项目ID,项目, 报告期数量和价格, 报告期数量定额取定价,价格基数ID) 
        select t.id,i.项目,i.报告期数量和价格,i.报告期数量定额取定价,i.价格基数ID
        from  inserted i 
        left join T_土建装饰工程造价指标和指数 a on a.项目=i.项目 and a.价格基数ID=i.价格基数ID 
        left join T_工程概况 t on 1 =1
        where not exists(selet 1 from T_土建装饰工程造价指标和指数 where 项目=i.项目 and 价格基数ID=i.价格基数ID)
      end