--1----------------------------
begin tran
go
insert into 作业项目表 values('zy2016006','112202002','y005',
10000,'张三', '07-01-2016' ,'07-04-2016','07-25-2016',
'作业公司作业一队','堵漏',7000,2500,1000,1400,11900,
'李四','07-26-2016',11900,'王五','07-28-2016')
insert into 材料费表 values('zy2016006','wm001',200,10)
insert into 材料费表 values('zy2016006','wm002',200,10)
insert into 材料费表 values('zy2016006','wm003',200,10)
insert into 材料费表 values('zy2016006','wm004',100,10)
if @@error<>0
begin
print '语句执行失败'
rollback
end
else
begin
print '语句执行成功'
commit
end
--2---------------------------------
begin tran
declare yb cursor for
select *
from 作业项目表
open yb
declare @单据号 varchar(20)
declare @预算单位 varchar(20)
declare @井号 varchar(20)
declare @预算金额 varchar(20)
declare @预算人 varchar(20)
declare @预算日期 varchar(20)
declare @开工日期 varchar(20)
declare @完工日期 varchar(20)
declare @施工单位 varchar(20)
declare @施工内容 varchar(20)
declare @材料费 varchar(20)
declare @人工费 varchar(20)
declare @设备费 varchar(20)
declare @其它费用 varchar(20)
declare @结算金额 varchar(20)
declare @结算人 varchar(20)
declare @结算日期 varchar(20)
declare @入账金额 varchar(20)
declare @入账人 varchar(20)
declare @入账日期 varchar(20)
print '单据号 '+
'预算单位 '+
'井号 '+
'预算金额 '+
'预算人 '+
'预算日期 '+
'开工日期 '+
'完工日期 '+
'施工单位 '+
'施工内容 '+
'材料费 '+
'人工费 '+
'设备费 '+
'其它费用 '+
'结算金额 '+
'结算人 '+
'结算日期 '+
'入账金额 '+
'入账人'+
'入账日期'
fetch next from yb
into @单据号,
@预算单位 ,
@井号 ,
@预算金额 ,
@预算人 ,
@预算日期,
@开工日期 ,
@完工日期 ,
@施工单位 ,
@施工内容 ,
@材料费 ,
@人工费 ,
@设备费 ,
@其它费用,
@结算金额 ,
@结算人 ,
@结算日期,
@入账金额 ,
@入账人 ,
@入账日期
while(@@fetch_status = 0)
begin
print
@单据号 +' '+
@预算单位 +' '+
@井号 +' '+
@预算金额 +' '+
@预算人 +' '+
@预算日期 +' '+
@开工日期 +' '+
@完工日期 +' '+
@施工单位 +' '+
@施工内容 +' '+
@材料费 +' '+
@人工费 +' '+
@设备费 +' '+
@其它费用 +' '+
@结算金额 +' '+
@结算人 +' '+
@结算日期 +' '+
@入账金额 +' '+
@入账人 +' '+
@入账日期
fetch next from yb
into
@单据号,
@预算单位 ,
@井号 ,
@预算金额 ,
@预算人 ,
@预算日期,
@开工日期 ,
@完工日期 ,
@施工单位 ,
@施工内容 ,
@材料费 ,
@人工费 ,
@设备费 ,
@其它费用,
@结算金额 ,
@结算人 ,
@结算日期,
@入账金额 ,
@入账人 ,
@入账日期 ;
end
--3----------------------------------
if object_id('_someDepCost','p') is not null
drop procedure _someDepCost;
go
create procedure _someDepCost
@单位代码 varchar(40),
@起始日期 datetime,
@结束日期 datetime
as
declare @单位名称 varchar(40);
declare @预算金额 money,
@结算金额 money,
@入账金额 money,
@未结算金额 money,
@未入账金额 money;
select @单位名称 = 单位名称 from 单位代码表
where 单位代码 = @单位代码
set @预算金额 = (select sum(预算金额) from 作业项目表
where 预算单位 like @单位代码 + '%' and (预算日期 between @起始日期 and @结束日期))
set @结算金额 = (select sum(结算金额) from 作业项目表
where 预算单位 like @单位代码 + '%' and (结算日期 between @起始日期 and @结束日期))
set @入账金额 = (select sum(入账金额) from 作业项目表
where 预算单位 like @单位代码 + '%' and (入账日期 between @起始日期 and @结束日期) and
(入账金额 is not null))
set @未结算金额 = (select sum(预算金额) from 作业项目表
where (结算金额 is null) and (预算日期 between @起始日期 and @结束日期))
set @未入账金额 = (select sum(结算金额) from 作业项目表
where (入账金额 is null) and (结算日期 between @起始日期 and @结束日期))
set @未结算金额 = @预算金额 - @结算金额
set @未入账金额 = @结算金额 - @入账金额
if @预算金额 is null
set @预算金额 = 0
if @结算金额 is null
set @结算金额 = 0
if @入账金额 is null
set @入账金额 = 0
if @未结算金额 is null
set @未结算金额 = 0
if @未入账金额 is null
set @未入账金额 = 0
declare @result varchar(100)
set @result = convert(varchar,@预算金额)+' '+convert(varchar,@结算金额)+
' '+convert(varchar,@入账金额)+' '+convert(varchar,@未结算金额)+' '+convert(varchar,@未入账金额)
print @单位名称+'单位'+convert(varchar,@起始日期,102)+'--'+convert(varchar,@结束日期,102)+'成本运营状况'
print '预算金额 结算金额 入账金额 未结算金额 未入账金额'
print @result
go
execute _someDepCost @单位代码 = '1122',@起始日期 = '2016-5-1',@结束日期 = '2016-5-29';
execute _someDepCost @单位代码 = '112201',@起始日期 = '2016-5-1',@结束日期 = '2016-5-29';
execute _someDepCost @单位代码 = '112201001',@起始日期 = '2016-5-1',@结束日期 = '2016-5-29';
go
--4---------------------------------------------
--(1)----------------------------
if OBJECT_ID('trmytr1','TR') is not null
drop trigger tr_mytrl
go
create trigger trmytr1 on 作业项目表
after insert
as
declare @结算金额 money
declare @temp1 money,@temp2 money,@temp3 money,@temp4 money;
select @temp1 = 材料费,@temp2 = 人工费,@temp3 = 设备费,@temp4 = 其他费用
from inserted;
set @结算金额 = @temp1+@temp2+@temp3+@temp4;
update 作业项目表
set 结算金额 = @结算金额
where 单据号 = (select 单据号 from inserted);
go
--(2)---------------------------------------------
if OBJECT_ID('trmytr2','TR') is not null
drop trigger tr_mytr2
go
create trigger trmytr2 on 作业项目表
after update
as
declare @结算金额 money
declare @temp1 money,@temp2 money,@temp3 money,@temp4 money;
select @temp1 = 材料费,@temp2 = 人工费,@temp3 = 设备费,@temp4 = 其他费用
from inserted;
set @结算金额 = @temp1+@temp2+@temp3+@temp4;
update 作业项目表
set 结算金额 = @结算金额
where 单据号 = (select 单据号 from inserted);
go
--(3)----------------------------------
if OBJECT_ID('trmytr3','TR') is not null
drop trigger tr_mytr3
go
create trigger trmytr3 on 作业项目表
instead of delete
as
delete from 材料费表
where 单据号 = (select 单据号 from deleted);
--(4)------------------------
begin tran
/*(1)*/ insert into 作业项目表(单据号,预算人,材料费,人工费,设备费,其他费用)
values('2017000','test',100,200,300,400);
delete from 作业项目表 where 单据号 = '2017000';
/*(2)*/ insert into 作业项目表(单据号,预算人,材料费,人工费,设备费,其他费用)
values('2017111','test',100,200,300,400);
update 作业项目表
set 材料费 = 100000
where 单据号 = '2017111';
/*(3)*/insert into 作业项目表(单据号,预算人,材料费,人工费,设备费,其他费用)
values('2017110','test',100,200,300,400);
insert into 材料费表
values('2017110','wm001');
select 单据号,物码
from
材料费表;
delete from 作业项目表
where 单据号 = '2017110';
select 单据号,物码
from 材料费表
rollback