2016-5-13

测试不能偷懒,一个小bug以后可能引起更麻烦的bug,很难下手

ctrl+alt+tab:桌面应用特效

10天没写了。。。伤心,漏掉了不少东西

数据同步完成,顺便保存一下

declare @gsmc varchar(50)
	declare @prjkey varchar(50)
	declare @prjsum varchar(50)
	declare @khbh varchar(50)
	declare @gsdz varchar(50)
	declare @sum varchar(50)
	declare @gsdz_key varchar(50)
	declare @gsdz_sum varchar(50)
	declare @floor_key varchar(50)
	declare @floor_name varchar(50)
	declare @floor_sum varchar(50)
	declare @floor_code varchar(50)
	declare @room_key varchar(50)
	declare @room_name varchar(50)
	declare @room_sum varchar(50)
	declare @room_code varchar(50)
	declare @cabinet_key varchar(50)
	declare @cabinet_name varchar(50)
	declare @cabinet_sum varchar(50)
	declare @cabinet_code varchar(50)
	declare @key varchar(50)
	declare @datatype char(1)
	declare @weizhixinxi_key varchar(50)
	declare @root_key varchar(50)

	declare cursor_project cursor for
			select prjname,prjkey from VisualNet_Project

			open cursor_project

			fetch next from cursor_project into @gsmc,@prjkey

			while @@FETCH_STATUS=0
			begin				
				
				select @root_key="key" from VisualNet_tvwPrj where prjkey = @prjkey and "relative" = 'root'
				
				
				declare cursor_gsdz cursor for
											select "key","text" from VisualNet_tvwPrj where prjkey = @prjkey and "relative"= @root_key
				
				open cursor_gsdz
				fetch next from cursor_gsdz into @gsdz_key,@gsdz
				while @@FETCH_STATUS=0 
				begin
					select @sum = COUNT(1) from VisualNetKey where PrjectKey = @prjkey and CustomerAddress = @gsdz and DeleteFlg = 0
					select @khbh = CustomerCode from VisualNetKey where PrjectKey = @prjkey and CustomerAddress = @gsdz and DeleteFlg = 0
					if(@sum = 0)
					begin
						select @prjsum=COUNT(1) from Customers where gsmc = @gsmc and gsdz = @gsdz
						if(@prjsum = 0)
						begin
							select @khbh = MAX(khbh+1) from Customers
							if(@khbh is null)
							begin
								set @khbh = '0001'
							end
							else
							begin
								set @khbh = RIGHT(('0000'+@khbh),4)
							end
							
							
							insert into Customers(khbh,gsmc,gsdz,gsdh) values(@khbh,@gsmc,@gsdz,'')
							insert into VisualNetKey(PrjectKey,ItemKey,CustomerCode,CustomerAddress,DataType,SyncFlg,DeleteFlg) values(@prjkey,'',@khbh,@gsdz,0,1,0)
						end
						else
						begin
							select @khbh=khbh from Customers where gsmc = @gsmc and gsdz = @gsdz
							insert into VisualNetKey(PrjectKey,ItemKey,CustomerCode,CustomerAddress,DataType,SyncFlg,DeleteFlg) values(@prjkey,'',@khbh,@gsdz,0,1,0)
						end
					end
					else
					begin
						update VisualNetKey set SyncFlg = 1 where PrjectKey = @prjkey and CustomerCode = @khbh and CustomerAddress = @gsdz and DataType = 0 
					end
					fetch next from cursor_gsdz into @gsdz_key,@gsdz
						
				end
				close cursor_gsdz
				deallocate cursor_gsdz
				
				
				
				
				--位置信息
				
				select @weizhixinxi_key = "key" from VisualNet_tvwPrj where prjkey = @prjkey and "relative" = 'root'
				
				
				--地址
				declare cursor_gsdz cursor for
										select "key","text" from VisualNet_tvwPrj where prjkey = @prjkey and "relative" = @weizhixinxi_key
				open cursor_gsdz
				fetch next from cursor_gsdz into @gsdz_key,@gsdz
				while @@FETCH_STATUS=0
				begin
					select @gsdz_sum = COUNT(1) from VisualNetKey where ItemKey = @gsdz_key and DeleteFlg = 0
					select @gsdz = CustomerAddress from VisualNetKey where ItemKey = @gsdz_key and DeleteFlg = 0
					if(@gsdz_sum = 0)
					begin
						insert into VisualNetKey(PrjectKey,ItemKey,CustomerCode,CustomerAddress,DataType,SyncFlg,DeleteFlg) values(@prjkey,@gsdz_key,@khbh,@gsdz,1,1,0)
					end
					else
					begin
						update VisualNetKey set SyncFlg = 1 where PrjectKey = @prjkey and CustomerCode = @khbh and CustomerAddress = @gsdz and DataType = 1
					end
					
					--楼层
					declare cursor_floor cursor for
										select "key","text" from VisualNet_tvwPrj where prjkey = @prjkey and "relative" = @gsdz_key
					
					open cursor_floor
					fetch next from cursor_floor into @floor_key,@floor_name
					while @@FETCH_STATUS=0
					begin
						select @floor_sum = COUNT(1) from VisualNetKey where ItemKey = @floor_key and PrjectKey = @prjkey and CustomerAddress = @gsdz and DeleteFlg = 0
						select @floor_code = FloorCode from VisualNetKey where ItemKey = @floor_key and PrjectKey = @prjkey and CustomerAddress = @gsdz and DeleteFlg = 0
						if(@floor_sum = 0)
						begin
							select @floor_code = MAX(floorcode+1) from CustomersFloor
							if(@floor_code is null)
							begin
								set @floor_code = '000001'
							end
							else
							begin
								set @floor_code = RIGHT(('000000'+@floor_code),6)
							end
							select @khbh = khbh from Customers where gsmc = @gsmc and gsdz = @gsdz
							insert into CustomersFloor(customercode,floorcode,floorname,floordevice) values(@khbh,@floor_code,@floor_name,0)
							insert into VisualNetKey(PrjectKey,ItemKey,CustomerCode,CustomerAddress,FloorCode,DataType,SyncFlg,DeleteFlg) values(@prjkey,@floor_key,@khbh,@gsdz,@floor_code,2,1,0)
						end
						else
						begin
							update CustomersFloor set floorname = @floor_name where floorcode = @floor_code
							update VisualNetKey set SyncFlg = 1 where FloorCode = @floor_code and DataType = 2
						end
						
						
						--房间
						declare cursor_room cursor for
										select "key","text" from VisualNet_tvwPrj where prjkey = @prjkey and "relative" = @floor_key
					
						open cursor_room
						fetch next from cursor_room into @room_key,@room_name
						while @@FETCH_STATUS=0
						begin
							select @room_sum = COUNT(1) from VisualNetKey where ItemKey = @room_key and PrjectKey = @prjkey and CustomerAddress = @gsdz and DeleteFlg = 0
							select @room_code = RoomCode from VisualNetKey where ItemKey = @room_key and PrjectKey = @prjkey and CustomerAddress = @gsdz and DeleteFlg = 0
							if(@room_sum = 0)
							begin
								select @room_code = MAX(roomcode+1) from CustomersRoom
								if(@room_code is null)
								begin
									set @room_code = '000001'
								end
								else
								begin
									set @room_code = RIGHT(('000000'+@room_code),6)
								end
								select @khbh = khbh from Customers where gsmc = @gsmc and gsdz = @gsdz
								insert into CustomersRoom(customercode,floorcode,roomcode,roomname,roomdevice) values(@khbh,@floor_code,@room_code,@room_name,0)
								insert into VisualNetKey(PrjectKey,ItemKey,CustomerCode,CustomerAddress,FloorCode,RoomCode,DataType,SyncFlg,DeleteFlg) values(@prjkey,@room_key,@khbh,@gsdz,@floor_code,@room_code,3,1,0)
							end
							else
							begin
								update CustomersRoom set roomname = @room_name where roomcode = @room_code
								update VisualNetKey set SyncFlg = 1 where RoomCode = @room_code and DataType =3
							end
							
							
							--机柜
							declare cursor_cabinet cursor for
										select "key","text" from VisualNet_tvwPrj where prjkey = @prjkey and "relative" = @room_key
					
							open cursor_cabinet
							fetch next from cursor_cabinet into @cabinet_key,@cabinet_name
							while @@FETCH_STATUS=0
							begin
								select @cabinet_sum = COUNT(1) from VisualNetKey where ItemKey = @cabinet_key and PrjectKey = @prjkey and CustomerAddress = @gsdz and DeleteFlg = 0
								select @cabinet_code = CabinetCode from VisualNetKey where ItemKey = @cabinet_key and PrjectKey = @prjkey and CustomerAddress = @gsdz and DeleteFlg = 0
								if(@cabinet_sum = 0)
								begin
									select @cabinet_code = MAX(cabinetcode+1) from CustomersCabinet
									if(@cabinet_code is null)
									begin
										set @cabinet_code = '000001'
									end
									else
									begin
										set @cabinet_code = RIGHT(('000000'+@cabinet_code),6)
									end
									select @khbh = khbh from Customers where gsmc = @gsmc and gsdz = @gsdz
									insert into CustomersCabinet(customercode,floorcode,roomcode,cabinetcode,cabinetname,cabinetdevice) values(@khbh,@floor_code,@room_code,@cabinet_code,@cabinet_name,0)
									insert into VisualNetKey(PrjectKey,ItemKey,CustomerCode,CustomerAddress,FloorCode,RoomCode,CabinetCode,DataType,SyncFlg,DeleteFlg) values(@prjkey,@cabinet_key,@khbh,@gsdz,@floor_code,@room_code,@cabinet_code,4,1,0)
								end
								else
								begin
									update CustomersCabinet set cabinetname = @cabinet_name where cabinetcode = @cabinet_code
									update VisualNetKey set SyncFlg = 1 where CabinetCode = @cabinet_code and DataType =4
								end
								fetch next from cursor_cabinet into @cabinet_key,@cabinet_name
								end
								close cursor_cabinet
								deallocate cursor_cabinet
								
							
							fetch next from cursor_room into @room_key,@room_name
							end
							close cursor_room
							deallocate cursor_room
								
						fetch next from cursor_floor into @floor_key,@floor_name
					end
					close cursor_floor
					deallocate cursor_floor
					
					fetch next from cursor_gsdz into @gsdz_key,@gsdz	
				end
				close cursor_gsdz
				deallocate cursor_gsdz
				
				fetch next from cursor_project into @gsmc,@prjkey
			end

			close cursor_project
			deallocate cursor_project
			
			update VisualNetKey set DeleteFlg = 1 where SyncFlg = 0;
				
				declare cursor_del cursor for
						select PrjectKey,ItemKey,CustomerCode,CustomerAddress,FloorCode,RoomCode,CabinetCode,datatype from VisualNetKey where DeleteFlg = 1
				open cursor_del
				
				fetch next from cursor_del into @prjkey,@key,@khbh,@gsdz,@floor_code,@room_code,@cabinet_code,@datatype
				while @@FETCH_STATUS=0
				begin
					if(@datatype = 2)
					begin
						delete from CustomersFloor where floorcode = @floor_code
					end
					if(@datatype = 3)
					begin
						delete from CustomersRoom where roomcode = @room_code
					end
					if(@datatype = 4)
					begin
						delete from CustomersCabinet where cabinetcode = @cabinet_code
						delete from AssetSb where lxcode = @cabinet_code
					end
					fetch next from cursor_del into @prjkey,@key,@khbh,@gsdz,@floor_code,@room_code,@cabinet_code,@datatype
				end
				close cursor_del
				deallocate cursor_del
				update VisualNetKey set SyncFlg = 0;
原文地址:https://www.cnblogs.com/xiaoguangit/p/5490269.html