62,242
社区成员




alter procedure dbo.PR_GetApprovalPath
as
declare CreateTable_Cursor cursor scroll
for select distinct NodeId,nodeName from
(select dbo.f_getkey(DepartmentId) as deptName,dbo.f_getkey(ProcessId) as proceName,dbo.f_getkey(NodeId) as nodeName,NodeId,
dbo.f_getRemark(ApprovalUserId) as userName,ApprovalAmount as money,DepartmentId as deptID
from dbo.WF_ApprovalPath ) as tb1 order by NodeId
open CreateTable_Cursor
--创建临时表
create table #tempTable
(
部门 varchar(50),
流程名称 varchar(64)
)
declare @ColumnName varchar(64)
declare @Nodeid varchar(64)
fetch next from CreateTable_Cursor into @Nodeid,@ColumnName
if(@@fetch_status=0)
begin
while @@fetch_status=0
begin
--对临时表进行字段添加
exec('alter table #tempTable add '+ @ColumnName+' varchar(1024)')
--print ('alter table #tempTable add '+ @ColumnName+' varchar(1024)')
fetch next from CreateTable_Cursor into @Nodeid,@ColumnName
end
end
close CreateTable_Cursor
deallocate CreateTable_Cursor
--插入表游标开始
declare InsertTable_cursor cursor scroll
for select distinct deptName,deptID ,proceName from
(select dbo.f_getkey(DepartmentId) as deptName,dbo.f_getkey(ProcessId) as proceName,dbo.f_getkey(NodeId) as nodeName,NodeId,
dbo.f_getRemark(ApprovalUserId) as userName,ApprovalAmount as money,DepartmentId as deptID
from dbo.WF_ApprovalPath ) as tb1 order by deptID
open InsertTable_cursor
declare @deptName varchar(64),@deptID varchar(64),@processName varchar(64)
fetch next from InsertTable_cursor into @deptName,@deptID,@processName
if(@@fetch_status=0)
begin
while @@fetch_status=0
begin
insert into #tempTable(部门,流程名称) values(@deptName,@processName)
--修改表游标开始
declare UpdateTable_Cursor cursor scroll
for select nodeName,NodeId from
(select dbo.f_getkey(DepartmentId) as deptName,dbo.f_getkey(ProcessId) as proceName,dbo.f_getkey(NodeId) as nodeName,NodeId,
dbo.f_getRemark(ApprovalUserId) as userName,ApprovalAmount as money,DepartmentId as deptID
from dbo.WF_ApprovalPath ) as tb1 where deptID=@deptID
open UpdateTable_Cursor
--设置变量
declare @Up_nodeName varchar(64),@Up_NodeId varchar(64)
fetch next from UpdateTable_Cursor into @Up_nodeName,@Up_NodeId
if(@@fetch_status=0)
begin
while @@fetch_status=0
begin
declare @userName varchar(20),@money varchar(64),@ColumnValue varchar(64)
select @userName=userName,@money=money from
(select dbo.f_getkey(DepartmentId) as deptName,dbo.f_getkey(ProcessId) as proceName,dbo.f_getkey(NodeId) as nodeName,NodeId,
dbo.f_getRemark(ApprovalUserId) as userName,ApprovalAmount as money,DepartmentId as deptID
from dbo.WF_ApprovalPath ) as tb1 where deptID=@deptID and NodeId=@Up_NodeId
set @ColumnValue=@userName+'('+@money+')'
exec('update #tempTable set '+ @Up_nodeName+'='''+@ColumnValue+''' where 部门='''+@deptName+'''')
fetch next from UpdateTable_Cursor into @Up_nodeName,@Up_NodeId
end
close UpdateTable_Cursor
deallocate UpdateTable_Cursor
end
fetch next from InsertTable_cursor into @deptName,@deptID,@processName
end
end
close InsertTable_cursor
deallocate InsertTable_cursor
--插入表游标结束
select * from #tempTable
public void SpanGridView(ref GridView pGv, int pSpanIndex)
{
if (pGv.Rows.Count > 0)
{
TableCell oldTc = pGv.Rows[0].Cells[0];
for (int i = 1; i < pGv.Rows.Count; i++)
{
TableCell tc = pGv.Rows[i].Cells[pSpanIndex];
if (oldTc.Text == tc.Text)
{
tc.Visible = false;
if (oldTc.RowSpan == 0)
{
oldTc.RowSpan = 1;
}
oldTc.RowSpan++;
}
else
{
oldTc = tc;
}
}
}
}
select DepartmentId as deptID,dbo.f_getkey(DepartmentId) as deptName,dbo.f_getkey(ProcessId) as proceName,
dbo.f_getkey(NodeId) as nodeName,dbo.f_getkey(ApprovalUserId) as userName,ApprovalAmount as [money]
from [TopFounder.FrameWork].[dbo].[WF_ApprovalPath] order by NodeId