使用儲存過程實現分頁列印 (轉)

worldblog發表於2007-12-14
使用儲存過程實現分頁列印 (轉)[@more@]


使用過程實現分頁列印。

這個儲存過程是一個小區寬頻管理,專案裡程式碼的一部分。

功能是:
實現把表userinfo裡的使用者資料按IP網段排序進行分頁列印!!
比如172.20.128.XX的IP簡稱為128網段的使用者,
172.20.119.XX的IP簡稱為119網段的使用者,

每個網段的使用者列印在一張A4紙上,
不足一張的按一張列印,其餘的可空出。
大於一張小於兩張的按二張列印,其餘空出.
經過估算一頁最多隻能列印37行.
思路是:先把出的按IP分組的使用者資訊和計算出的空格行insert進一個臨時表中
然後多此臨時表列印就行了。

 

--首先清空表
--truncate table subip

declare @result int
declare @subvarchar(20)
declare cur_e scroll cursor for
  select substring(ip_address,8,3) from userinfo group by substring(ip_address,8,3)

open cur_e--開啟遊標
--print 'aaa'+convert(char(13),@@cursor_rows)
 fetch first from cur_e into @subip

while(@@fetch_status=0)
 begin
  --insert into subip (supip)values (@subip)
  insert into subip select userinfo.username,userinfo.catalyst_port,userinfo.home_address,
userinfo.ip_address,userinfo.phone,catalyst.label,'' from userinfo,
catalyst where userinfo.catalyst_id=catalyst.id and substring(userinfo.ip_address,8,3) to:=@subip">=@subip
  set @result=@@rowcount
  if(@result>37)
  begin
  while(@result<74)
  begin
  insert into subip select

username='',catalyst_port='',home_address='',ip_address='',phone='',label='',account=''
  set @result=@result+1
  end
  end
  else
  begin
  while (@result<37)
  begin
  insert into subip select

username='',catalyst_port='',home_address='',ip_address='',phone='',label='',account=''
  set @result=@result+1
  end
  end
  --select @@rowcount
  fetch next from cur_e into @subip
 end
close cur_e
deallocate cur_e


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-993455/,如需轉載,請註明出處,否則將追究法律責任。

相關文章