(2期)通过使用脚本,实现在LandaV8里面新增字段

/*
使用方法:
	1:在LandaV8 数据库上执行创建SP(存储过程脚本)
	2:运行存储过程,传入参数(以下是参数翻译)
	--====================================================
	--====================================================		
		@GGUID uniqueidentifier,					--属性组GUID
		@DID varchar(128),							--Database Column Name
		@DTYPE int ,								--数据类型(0可变字符串 1整数 2浮点数 4日期时间 5日期  6时间 12 GUID)
		@CTRL int,									--控件类型(0文本框 7文本框多行 15日期控件 16日期时间控件)
		@DESC0 varchar(256),						--字段描述英文
		@DESC1 varchar(256),						--字段描述中文
		@DESC2 varchar(256), 						--字段描述繁体
		@LENGTH int,								--字段长度
		@PREC int,									--精度
		@PNULL int									--是否允许为空
	--====================================================
		exec sp_addTextCtr
		'67c87c8f-bd55-4437-901a-782ef897309d',		
		'Comments',									
		0,											
		0,											
		'Comments',									
		'Comments',									
		'Comments',									
		2000,										
		0,											
		0											
	--====================================================
	步骤3:更新配置
	      执行存储过程:    spmtos 'landaDomainUser'
	      注:landaDomainUser为模板 HID
	步骤4:登陆landaV8--》模板管理*--》清空所有缓存--》刷新模板组
	
	ok,一切大功告成,可以到目标模板里查询增加后的效果. ☺
*/


/*********************************************************************************************
Function:使用脚本增加字段
	--数据类型(0可变字符串 1整数 2浮点数 4日期时间 5日期  6时间 12 GUID)
	--控件类型(0文本框 7文本框多行 15日期控件 16日期时间控件)
@CTRL int,									
Author:Bean
Date:2012-09-24
*********************************************************************************************/
if OBJECT_ID('sp_addTextCtr','P') is not null drop proc sp_addTextCtr
go
create proc sp_addTextCtr
@GGUID uniqueidentifier,					--属性组GUID
@DID varchar(128),							--Database Column Name
@DTYPE int ,								--数据类型(0可变字符串 1整数 2浮点数 4日期时间 5日期  6时间 12 GUID)
@CTRL int,									--控件类型(0文本框 7文本框多行 15日期控件 16日期时间控件)
@DESC0 varchar(256),						--字段描述英文
@DESC1 varchar(256),						--字段描述中文
@DESC2 varchar(256), 						--字段描述繁体
@LENGTH int,								--字段长度
@PREC int,									--精度
@PNULL int									--是否允许为空
as
begin
	set nocount on
	
	----------------------------------------------------------------------------------------------
	declare @DGUID uniqueidentifier,		--字段GUID
			@SDGUID uniqueidentifier,		--场景属性明细GUID
			@SGUID uniqueidentifier,		--场景组GUID
			@SGGUID uniqueidentifier,		--场景属性组GUID
			@HGUID uniqueidentifier,		--模板ID
			@TGUID uniqueidentifier,		--模板组ID
			@ZORDER int,					--顺序
			@tbname	varchar(64)				--表名
	----------------------------------------------------------------------------------------------	
	/*根据GGUID获取TGUID,HGUID,DGUID*/
	select @TGUID=TGUID,@HGUID=HGUID,@DGUID=NEWID()
	from SMTMPG 
	where GGUID=@GGUID
	----------------------------------------------------------------------------------------------
	/*单据信息核对  查看该字段是否已经存在*/
	--select @tbname=HID+'_1' from SMTMPH where HGUID=@HGUID
	select  @tbname=ltrim(h.hid)+'_'+Ltrim(g.GORDER) from SMTMPG g
	left join SMTMPH h on g.HGUID=h.HGUID
	where GGUID=@GGUID
	if exists (select 1 from syscolumns where id=OBJECT_ID(@tbname,'U') and name=@DID)
	Begin
		RaisError('there have been existed this column',16,1)
		return
	End	Else
	if @DTYPE not in(0,1,2,4,5,6,12)
	Begin
		RaisError('Datatime Tyte should belong varchar/numeric/datetime/GUID',16,1)
		return
	End else 
	if @CTRL not in (0,7,15,16)
	Begin
		RaisError('Controller Tyte should belong text controller/time controller',16,1)
		return
	End else
	Begin 
		if @DTYPE=0							--数值字符类型
		Begin
			exec('alter table '+@tbname+' add '+@DID+' varchar('+@LENGTH+')')
			set @PREC=0
		End else 
		if @DTYPE=1							--数值整数类型
		Begin
			exec('alter table '+@tbname+' add '+@DID+' int')
			set @PREC=0
			set @LENGTH=null
		End else
		if @DTYPE=2							--数值小数类型
		Begin
			exec('alter table '+@tbname+' add '+@DID+' numeric(38,'+@PREC+')')
			set @LENGTH=null
		End else
		if @DTYPE in (4,5,6)				--日期格式
		Begin
			exec('alter table '+@tbname+' add '+@DID+' datetime')
			set @LENGTH=null
		End else
		if @DTYPE =12
		Begin
			exec('alter table '+@tbname+' add '+@DID+' varchar(36)')
			set @LENGTH=null
		End
	End
	--exec SPMTOS @tbname
	
	----------------------------------------------------------------------------------------------
	/*把信息插入到场景表*/
	declare searchGUID CURSOR for 
	select DISTINCT SGUID from SMTMPS where HGUID=@HGUID
	Open searchGUID 
	FETCH NEXT from searchGUID into @SGUID
	while @@FETCH_STATUS=0
	Begin
		/*得到[场景属性组GUID],[场景组GUID],[顺序(增加10)]*/
		select @SGGUID=SGGUID,@SGUID=SGUID,@SDGUID=newID()
		from SMTMPSG 
		where SGUID=@SGUID 
			  and GTYPE='0'
		--得到ZORDER排序值
		select @ZORDER=MAX(ZORDER)+10 from SMTMPD 
		where HGUID=@HGUID and ZORDER not between '1001' and '1008'
		--insert begin
		INSERT INTO [SMTMPSD]
			   ([SDGUID]
			   ,[DID]
			   ,[OLDDID]
			   ,[DESC0]
			   ,[DESC1]
			   ,[DESC2]
			   ,[DESC3]
			   ,[DESC4]
			   ,[DESC5]
			   ,[DESC6]
			   ,[DESC7]
			   ,[DESC8]
			   ,[DESC9]
			   ,[DTYPE]
			   ,[LENGTH]
			   ,[PREC]
			   ,[PNULL]
			   ,[PDEFAULT]
			   ,[ISKEY]
			   ,[CTRL]
			   ,[CTRLID]
			   ,[CTRLD]
			   ,[ZRIGHT]
			   ,[PSYS]
			   ,[DLIST]
			   ,[WIDTH]
			   ,[FONTL]
			   ,[FONTC]
			   ,[AGGR]
			   ,[AGDEST]
			   ,[MAST]
			   ,[DSAVE]
			   ,[ZORDER]
			   ,[CRTDATE]
			   ,[CRTUSER]
			   ,[MDFDATE]
			   ,[MDFUSER]
			   ,[SYSLEVEL]
			   ,[GGUID]
			   ,[HGUID]
			   ,[TGUID]
			   ,[SGUID]
			   ,[SGGUID]
			   ,[DGUID]
			   ,[CTop]
			   ,[CLeft]
			   ,[RowSpan]
			   ,[ColumnSpan]
			   ,[LabelColor])
		 VALUES
			   (@SDGUID
			   ,@DID
			   ,@DID
			   ,@DESC0
			   ,@DESC1
			   ,@desc2
			   ,'新属性'
			   ,'新属性'
			   ,'新属性'
			   ,'新属性'
			   ,'新属性'
			   ,'新属性'
			   ,'新属性'
			   ,@DTYPE
			   ,ISNULL(@LENGTH,50)
			   ,@PREC
			   ,case @PNULL when 0 then 0 else 1 end
			   ,null
			   ,0
			   ,@CTRL
			   ,null
			   ,null
			   ,0
			   ,0
			   ,0
			   ,125
			   ,'[Font: Name=宋体, Size=9, Units=3, GdiCharSet=1, GdiVerticalFont=False]'
			   ,'[Font: Name=宋体, Size=9, Units=3, GdiCharSet=1, GdiVerticalFont=False]'
			   ,0
			   ,null
			   ,null
			   ,0
			   ,@ZORDER
			   ,'2012-06-19 15:26:11.493'
			   ,'SYSADMIN'
			   ,'2012-06-19 15:26:11.493'
			   ,'SYSADMIN'
			   ,'1'
			   ,@GGUID
			   ,@HGUID
			   ,@TGUID
			   ,@SGUID
			   ,@SGGUID
			   ,@DGUID
			   ,1
			   ,1
			   ,1
			   ,1
			   ,null)
	FETCH NEXT from searchGUID into @SGUID
	end
	close searchGUID
	deallocate searchGUID
	------------------------------------------------------------------------------	
	/*将字段信息插入到SMTMPD(主信息)表*/
	INSERT INTO [SMTMPD]
           (
           [DGUID]							--模板属性明细的ID
           ,[DID]							--属性编码
           ,[OLDDID]						--
           ,[DESC0]							--英文
           ,[DESC1]							--简体中文 
           ,[DESC2]							--繁体中文
           ,[DESC3]							--其他语种1
           ,[DESC4]							--其他语种
           ,[DESC5]							--其他语种
           ,[DESC6]							--其他语种
           ,[DESC7]							--其他语种
           ,[DESC8]							--其他语种
           ,[DESC9]							--其他语种
           ,[DTYPE]							--明细类型
           ,[LENGTH]						--长度
           ,[PREC]							--精度
           ,[PNULL]							--允许为空
           ,[PDEFAULT]						--默认值
           ,[ISKEY]							--为主键
           ,[CTRL]							--控件类型 
           ,[CTRLID]						--控件编码
           ,[CTRLD]							--控件明细
           ,[ZRIGHT]						--权限
           ,[PSYS]							--系统
           ,[DLIST]							--主显示
           ,[WIDTH]							--控件宽度
           ,[FONTL]							--标签字体
           ,[FONTC]							--内容字体
           ,[AGGR]							--统计类型
           ,[AGDEST]						--统计到
           ,[MAST]							--主控字段
           ,[DSAVE]							--值保留
           ,[ZORDER]						--次序
           ,[CRTDATE]						--创建时间
           ,[CRTUSER]						--创建者
           ,[MDFDATE]						--删除时间
           ,[MDFUSER]						--删除者
           ,[SYSLEVEL]						--操作等级
           ,[GGUID]							--属性组ID
           ,[HGUID]							--模板ID
           ,[TGUID]							--模板组ID
           ,[CTop]							
           ,[CLeft]
           ,[RowSpan]
           ,[ColumnSpan]
           ,[LabelColor]
           )
     VALUES
           (@DGUID,
            @DID,
            @DID,
            @DESC0,
			@DESC1,
			@DESC2
           ,'新属性'
           ,'新属性'
           ,'新属性'
           ,'新属性'
           ,'新属性'
           ,'新属性'
           ,'新属性'
           ,@DTYPE						/*   DTYPE(明细类型详细)
									   0:可变字符串 1:整数             2:浮点数 3:数值 4:日期时间 5:日期
									   6:时间       7:自动增加(客户端) 8:自动增加(服务器端) 9:类眉 
									   10:分类符 11:明细 12:GUID
									*/
           ,ISNULL(@LENGTH,50)
           ,@PREC						
           ,case @PNULL when 0 then 0 else 1 end						/*  0:是  1:否 */
           ,null
           ,0
           ,@CTRL
           ,null
           ,null
           ,0
           ,0
           ,0
           ,125
           ,'[Font: Name=宋体, Size=9, Units=3, GdiCharSet=1, GdiVerticalFont=False]'
           ,'[Font: Name=宋体, Size=9, Units=3, GdiCharSet=1, GdiVerticalFont=False]'
           ,0
           ,''
           ,''
           ,0
           ,@ZORDER
           ,'2012-06-19 15:26:11.493'
           ,'SYSADMIN'
           ,'2012-06-19 15:34:41.043'
           ,'SYSADMIN'
           ,'1'
           ,@GGUID
		   ,@HGUID
		   ,@TGUID
           ,1
           ,1
           ,case @CTRL when 7 then 2 else 1 end
           ,2
           ,'')
End

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章