-- Copyright (c) Nexus
— Модуль класса -First- -Первый класс-.
CREATE PROCEDURE First_getp_edit_
Panshin 2003.08.19
@p1 int, @p2 int, @p3 int
AS
Begin Properties?
External Pr?
--print 'First_getp_edit_'
select @cnt=@cnt+1
insert into Properties (u,No,Flag,Proc Name?,Name) select @@spid,@cnt,1, 'view', 'Просмотр Первый класс'
select @cnt=@cnt+1
insert into Properties (u,No,Flag,Proc Name?,Name) select @@spid,@cnt,1, 'edit', 'Редакция Первый класс'
select @cnt=@cnt+1
insert into Properties (u,No,Flag,Proc Name?,Name) select @@spid,@cnt,1, 'print', 'Печать Первый класс'
declare @Name varchar(32), @str varchar(64), @Pre Name? varchar(32), @Post Name? varchar(32), @Class varchar(64), @ccudn int
select @Class=Class from Docs where UDN=@p1
select @ccudn=UDN from TCT_ClassCreation_cross where num=0 and status=0 and UDN=(select UDN from Docs where Class='ClassCreation' and Name=@Class)
select @Name=Name from Docs where UDN=@ccudn and Class='ClassCreation'
select @Pre Name?=preclass from TCT_ClassCreation_cross where UDN=@ccudn and status=0 and num=0
if(@Pre Name? is null) select @str='Шаг назад... '+@Name
else begin
select @cnt=@cnt+1
insert into Properties (u,No,Flag,Proc Name?,Name) select @@spid,@cnt,0, 'First_PRE', @str
end
if(@Post Name? is null) select @str='Шаг вперед... '+@Name+' в(о) ...'
else begin
select @cnt=@cnt+1
insert into Properties (u,No,Flag,Proc Name?,Name) select @@spid,@cnt,0, 'First_POST', @str
end
GO
— Copyright (c) Nexus
CREATE PROCEDURE First_gets_edit_
— Pan Shin
@p1 int, @p2 int, @p3 int
AS
Begin Detail?
--print 'First_gets_edit_'
update Detailed set String Old?='Первый класс' where UDN=@p1 and u=@@spid and No=0
select @cnt=@cnt+1000
insert into Detailed (No,u,UDN,Lev,Recycable,Acc Mode?,Value Type?,Value Id?,Value Format?, String Value?)
select @cnt,@@spid,@p1,@lev,0, 1,1, 'Name', 'sИмя',
select @cnt=@cnt+1000
insert into Detailed (No,u,UDN,Lev,Recycable,Acc Mode?,Value Type?,Value Id?,Value Format?, String Value?)
select @cnt,@@spid,@p1,@lev,0, 0,1, 'No', 'sНомер',
Edit Int? 'f_one', 'iПервый первого класса',11
Edit Int? 'f_two', 'iВторой первого класса',12
Edit Int? 'f_three', 'iТретий первого класса',13
External View?
GO
— Copyright (c) Nexus
CREATE PROCEDURE First_cre_edit_
— Pan Shin
@p1 int, @p2 int, @p3 int
AS
declare @Name varchar(128), @iRet int, @Num int, @No varchar(128)
--Additional declare
declare
@f_one int,
@f_two int,
@f_three int,
select @Name=Get String?({'Name'})
select @No =Get String?({'No'})
--print 'First_cre_edit_'
select @f_one = (select Int Value? from Detailed where u=@@spid and UDN=@p1 and Value Id?='f_one')
select @f_two = (select Int Value? from Detailed where u=@@spid and UDN=@p1 and Value Id?='f_two')
select @f_three = (select Int Value? from Detailed where u=@@spid and UDN=@p1 and Value Id?='f_three')
exec @iRet=Get Doc Num_ Numerator? @p2, @No output, @Num output
if @iRet != 0 set @No=' '
if @Name is null set @Name=' '
update Docs set Name=@Name, No=@No where UDN=@p2
--Additional command
insert into TFirst(UDN,num,status,substatus,comment,f_one,f_two,f_three,eend)
select @p2,null,null,null,null,@f_one,@f_two,@f_three,null
GO
— Copyright (c) Nexus
CREATE PROCEDURE First_read_edit_
— Pan Shin
@p1 int, @p2 int, @p3 int
AS
declare @Name varchar(128), @No varchar(128)
select @Name=Name, @No=No from Docs where UDN=@p1
Begin Detail?
declare
@f_one int,
@f_two int,
@f_three int,
select @f_one = f_one, @f_two = f_two, @f_three = f_three, @eend = eend
from TFirst where UDN=@p1
--print 'First_read_edit_'
update Detailed set String Old?='Первый класс' where UDN=@p1 and u=@@spid and No=0
select @cnt=@cnt+1000
insert into Detailed (No,u,UDN,Lev,Recycable,Acc Mode?,Value Type?,Value Id?,Value Format?, String Value?)
select @cnt,@@spid,@p1,@lev,0, 1,1, 'Name', 'sИмя',@Name
select @cnt=@cnt+1000
insert into Detailed (No,u,UDN,Lev,Recycable,Acc Mode?,Value Type?,Value Id?,Value Format?, String Value?)
select @cnt,@@spid,@p1,@lev,0, 0,1, 'No', 'sНомер',@No
Edit Int? 'f_one', 'iПервый первого класса', @f_one
Edit Int? 'f_two', 'iВторой первого класса', @f_two
Edit Int? 'f_three', 'iТретий первого класса', @f_three
External View?
--Additional command
GO
CREATE PROCEDURE First_read_view_
@p1 int, @p2 int, @p3 int
AS
--print 'First_read_view_'
exec First_read_edit_ @p1, @p2, @p3
Window Title?({'Просмотр'})
Change Detail To Read?({@p1})
--Additional command
GO
— Copyright (c) Nexus
CREATE PROCEDURE First_put_edit_
— Pan Shin
@p1 int, @p2 int, @p3 int
AS
declare @Name varchar(128), @No varchar(128)
--print 'First_put_edit_'
declare
@f_one int,
@f_two int,
@f_three int,
Var String?({@Name};{'Name'})
Var String?({@No};{'No'})
--Additional command
select @f_one=Int Value? from Detailed where u=@@spid and UDN=@p1 and Value Id?='f_one'
select @f_two=Int Value? from Detailed where u=@@spid and UDN=@p1 and Value Id?='f_two'
select @f_three=Int Value? from Detailed where u=@@spid and UDN=@p1 and Value Id?='f_three'
if @Name is null set @Name=
if @No is null set @No=
update Docs set Name=@Name, No=@No where UDN=@p1
--Additional command
declare @num int, @status int, @substatus int, @comment varchar(128)
select @num=num, @status=status, @substatus=substatus, @comment=comment, @eend = eend
from TFirst where UDN=@p1
delete from TFirst where UDN=@p1
insert into TFirst(UDN,num,status,substatus,comment,f_one,f_two,f_three,eend)
select @p1,@num,@status,@substatus,@comment,@f_one,@f_two,@f_three,@eend
GO
— Copyright (c) Nexus
CREATE PROCEDURE First_cycl_edit_
— Pan Shin
@p1 int, @p2 int, @p3 int
AS
declare @Change Mode? int, @Value Id? varchar(32), @Int Value? int, @Int Old? int, @String Value? varchar(128),
@Doc Name? varchar(128), @Money Value? money, @Money Value Old? money, @Float Value? float
--print 'First_cycl_edit_'
declare
@f_one int,
@f_two int,
@f_three int,
GO
--Additional command
— Copyright (c) Nexus
CREATE PROCEDURE First_era_del_
— Pan Shin
@p1 int, @p2 int, @p3 int
AS
--print 'First_era_del_'
delete from Docs where UDN=@p1
delete from Ext Columns? where UDN=@p1
--Additional command
delete from TFirst where UDN=@p1
GO
— Copyright (c) Nexus
CREATE PROCEDURE First_off_del_
— Pan Shin
@p1 int, @p2 int, @p3 int
AS
--print 'First_off_del_'
— insert here
--Additional command
GO
— Copyright (c) Nexus
CREATE PROCEDURE First_on_extcol_
— Pan Shin
@p1 int, @p2 int, @p3 int
AS
--print 'First_on_extcol_'
declare
@f_one int,
@f_two int,
@f_three int,
— insert here
--Additional command
GO
CREATE PROCEDURE First_upd_extcol_
— Pan Shin
@p1 int, @p2 int, @p3 int
AS
exec First_off_extcol_ @p1, @p2, @p3
exec First_on_extcol_ @p1, @p2, @p3
GO
CREATE PROCEDURE First_off_extcol_
— Pan Shin
@p1 int, @p2 int, @p3 int
AS
delete from Ext Columns? where UDN=@p1
GO
— Copyright (c) Nexus
CREATE PROCEDURE First_cycp_edit_
— Pan Shin
@p1 int, @p2 int, @p3 int
AS
--print 'First_cycp_edit_'
— insert here
--Additional command
GO
— Copyright (c) Nexus
CREATE PROCEDURE First_read_print_
— Pan Shin
@p1 int, @p2 int, @p3 int
AS
--print 'First_read_print_'
— insert here
--Additional command
GO
— Copyright (c) Nexus
CREATE PROCEDURE First_filt_edit_
— Panshin
@p1 int, @p2 int, @p3 int
AS
--print 'First_filt_edit_'
Begin Filter?
--Additional command
--Additional command
GO
CREATE procedure First_PRE
@UDN int
— Panshin, 2003–09–18
as
--print 'First_PRE'
if @UDN is null or @UDN=0 return
declare @from_cl int, @to_cl int, @ii int, @cs int, @Col Name? varchar(64), @main int, @slave int,@Class Name? varchar(64),
declare @Class varchar(64)
select @Class=Class from Docs where UDN=@UDN
select @to_cl=UDN from TCT_ClassCreation_cross where num=0 and status=0 and UDN=(select UDN from Docs where Class='ClassCreation' and Name=@Class)
set @from_cl=(select UDN from Docs where Class='ClassCreation'
and Name=(select preclass from TCT_ClassCreation_cross where UDN=@to_cl and num=0 and status=0))
select @Class Name?=( select Name from Docs where Class='ClassCreation' and UDN=@to_cl)
— Назначения
set @fromTab = (select ltrim(rtrim(Table Name?)) from TCT_ClassCreation where UDN=@from_cl )
set @toTab = (select ltrim(rtrim(Table Name?)) from TCT_ClassCreation where UDN=@to_cl )
--print @fromTab
--print @toTab
set @fromCol=
set @fromNull=
declare lt cursor for select Col Name? from TCT_ClassCreation_grid where UDN=@from_cl order by num
open lt
fetch next from lt into @Col Name?
while @@FETCH_STATUS <> -1
begin
if @@FETCH_STATUS <> -2
begin
set @toCol=
set @toNull=
declare lt cursor for select Col Name? from TCT_ClassCreation_grid where UDN=@to_cl order by num
open lt
fetch next from lt into @Col Name?
while @@FETCH_STATUS <> -1 begin
if @@FETCH_STATUS <> -2 begin
set @xtransList=''
declare lt cursor for select main,slave from TCT_ClassCreation_cross where status=0 and UDN=@to_cl order by num
open lt
fetch next from lt into @main, @slave
while @@FETCH_STATUS <> -1 begin
if @@FETCH_STATUS <> -2 begin
--print @xtransList
--print @fromCol
--print @toCol
if(@fromTab is null or @toTab is null) return
--0
set @sql_cmd='delete '+@fromTab+' where UDN='+rtrim(ltrim(convert(char,@UDN)))
execute sp_executesql @stmt = @sql_cmd
1
set @sql_cmd='insert into '+@fromTab+'(UDN,num,status,substatus,comment'
set @sql_cmd=@sql_cmd+@fromCol+',eend) select UDN,null,-1,case when substatus is null then 1 else substatus+1 end,case when comment is null then '
set @sql_cmd=@sql_cmd+ltrim(rtrim(convert(char,@to_cl)))+', else '+ltrim(rtrim(convert(char,@to_cl)))+',+comment end'+@fromNull+',null from '
set @sql_cmd=@sql_cmd+@toTab+' where UDN='+rtrim(ltrim(convert(char,@UDN)))
execute sp_executesql @stmt = @sql_cmd
2
set @sql_cmd='update '+@fromTab+' set status=-2 where UDN='+rtrim(ltrim(convert(char,@UDN)))
execute sp_executesql @stmt = @sql_cmd
set @sql_cmd='update '+@fromTab+' set '+@fromTab+'.status=-3'+@xtransList+' from '+@toTab+','+@fromTab+' where '+@toTab+'.UDN='+@toTab+'.UDN and '+@fromTab+'.UDN='+rtrim(ltrim(convert(char,@UDN)))
execute sp_executesql @stmt = @sql_cmd
3
select @toDir=(select UDN from Roots where Root Name?=( select Name from Docs where UDN=@from_cl))
select @sql_cmd='update Docs set Folder='+convert(char,@toDir)+',No=First_from_'+@Class Name?+' where Deleted=0 and UDN='+rtrim(ltrim(convert(char,@UDN)))
execute sp_executesql @stmt = @sql_cmd
Пока не понятно, что делать с полем No, ктр строковое, но является аналогом перечисления, нумерации или артикула.
set @sql_cmd='update Docs set Class=(select Name from Docs where UDN='+ltrim(rtrim(convert(char,@from_cl)))+') where Deleted=0 and UDN='+rtrim(ltrim(convert(char,@UDN)))
execute sp_executesql @stmt = @sql_cmd
set @sql_cmd='delete '+@toTab+' where UDN='+rtrim(ltrim(convert(char,@UDN)))
execute sp_executesql @stmt = @sql_cmd
--null
set @sql_cmd='update '+@fromTab+' set status=0, substatus=0,comment= where status=-3 and UDN='+rtrim(ltrim(convert(char,@UDN)))
execute sp_executesql @stmt = @sql_cmd
go
CREATE procedure First_POST
@UDN int
— Panshin, 2003–09–18
as
print 'First_POST'
if @UDN is null or @UDN=0 return
declare @from_cl int, @to_cl int, @ii int, @cs int, @Col Name? varchar(64), @main int, @slave int,@Class Name? varchar(64),
declare @Class varchar(64)
select @Class=Class from Docs where UDN=@UDN
select @to_cl=UDN from TCT_ClassCreation_cross where num=0 and status=0 and UDN=(select UDN from Docs where Class='ClassCreation' and Name=@Class)
set @from_cl=(select UDN from Docs where Class='ClassCreation'
and Name=(select postclass from TCT_ClassCreation_cross where UDN=@to_cl and num=0 and status=1))
select @Class Name?=( select Name from Docs where Class='ClassCreation' and UDN=@to_cl)
— Назначения
set @fromTab = (select ltrim(rtrim(Table Name?)) from TCT_ClassCreation where UDN=@from_cl )
set @toTab = (select ltrim(rtrim(Table Name?)) from TCT_ClassCreation where UDN=@to_cl )
--print @fromTab
--print @toTab
set @fromCol=
set @fromNull=
declare lt cursor for select Col Name? from TCT_ClassCreation_grid where UDN=@from_cl order by num
open lt
fetch next from lt into @Col Name?
while @@FETCH_STATUS <> -1
begin
if @@FETCH_STATUS <> -2
begin
set @toCol=
set @toNull=
declare lt cursor for select Col Name? from TCT_ClassCreation_grid where UDN=@to_cl order by num
open lt
fetch next from lt into @Col Name?
while @@FETCH_STATUS <> -1 begin
if @@FETCH_STATUS <> -2 begin
set @xtransList=''
declare lt cursor for select main,slave from TCT_ClassCreation_cross where status=1 and UDN=@to_cl order by num
open lt
fetch next from lt into @main, @slave
while @@FETCH_STATUS <> -1 begin
if @@FETCH_STATUS <> -2 begin
--print @xtransList
--print @fromCol
--print @toCol
if(@fromTab is null or @toTab is null) return
--0
set @sql_cmd='delete '+@fromTab+' where UDN='+rtrim(ltrim(convert(char,@UDN)))
execute sp_executesql @stmt = @sql_cmd
1
set @sql_cmd='insert into '+@fromTab+'(UDN,num,status,substatus,comment'+@fromCol
set @sql_cmd=@sql_cmd+',eend) select UDN,null,-1,case when substatus is null then 1 else substatus+1 end,case when comment is null then '
set @sql_cmd=@sql_cmd+ltrim(rtrim(convert(char,@to_cl)))+', else '+ltrim(rtrim(convert(char,@to_cl)))+', +comment end'
set @sql_cmd=@sql_cmd+@fromNull+',null from '+@toTab+' where UDN='+rtrim(ltrim(convert(char,@UDN)))
execute sp_executesql @stmt = @sql_cmd
2
set @sql_cmd='update '+@fromTab+' set status=-2 where UDN='+rtrim(ltrim(convert(char,@UDN)))
execute sp_executesql @stmt = @sql_cmd
set @sql_cmd='update '+@fromTab+' set '+@fromTab+'.status=-3'+@xtransList+' from '+@toTab+','+@fromTab+' where '+@toTab+'.UDN='+@toTab+'.UDN and '+@fromTab+'.UDN='+rtrim(ltrim(convert(char,@UDN)))
execute sp_executesql @stmt = @sql_cmd
3
select @toDir=(select UDN from Roots where Root Name?=( select Name from Docs where UDN=@from_cl))
select @sql_cmd='update Docs set Folder='+convert(char,@toDir)+',No=First_from_'+@Class Name?+' where Deleted=0 and UDN='+rtrim(ltrim(convert(char,@UDN)))
execute sp_executesql @stmt = @sql_cmd
Пока не понятно, что делать с полем No, ктр строковое, но является аналогом перечисления, нумерации или артикула.
set @sql_cmd='update Docs set Class=(select Name from Docs where UDN='+ltrim(rtrim(convert(char,@from_cl)))+') where Deleted=0 and UDN='+rtrim(ltrim(convert(char,@UDN)))
execute sp_executesql @stmt = @sql_cmd
set @sql_cmd='delete '+@toTab+' where UDN='+rtrim(ltrim(convert(char,@UDN)))
execute sp_executesql @stmt = @sql_cmd
--null
set @sql_cmd='update '+@fromTab+' set status=0, substatus=0,comment= where status=-3 and UDN='+rtrim(ltrim(convert(char,@UDN)))
execute sp_executesql @stmt = @sql_cmd
go