DataReader做為數據源手動分頁

< %@ Import  Namespace = " System.Data "  % >
< %@ Import  NameSpace = " System.Data.OleDb "  % >
< html >
< head runat = server >
< title ></ title >
</ head >
< body >
< %
Dim  objCon  As  OleDbConnection
Dim  objCmd  As  OleDbCommand
Dim  objDataReader  As  OleDbDataReader
Dim  intFCount, intI  As   Integer
Dim  pageNo, pageSize  As   String
Dim  intPageNo, intPageSize, intStartRec, intStopRec  As   Integer
Dim  intMaxPageCount, intMaxRec, intCount  As   Integer
'  取得目前資料表記錄的頁數
pageNo  =  Request.QueryString( " PageNo " )
If  pageNo  =   ""   Then
   intPageNo 
=   1
Else
   intPageNo 
=  Convert.ToInt32(pageNo)
End   If
' //取得每一頁顯示的記錄數

pageSize 
=  Request.QueryString( " PageSize " )
If  pageSize  =   ""   Then
   intPageSize 
=   2
Else
   intPageSize 
=  Convert.ToInt32(pageSize)
End   If
'  OLEDB提供者字串
Dim  strDbCon  =   " Provider=Microsoft.Jet.OLEDB.4.0;Data Source= "   &  _
               Server.Mappath(
" Users.mdb "
'  建立Connection物件
objCon  =   New  OleDbConnection(strDbCon)
objCon.Open() 
'  開啟資料庫連結
'
 建立Command物件的SQL指令
objCmd  =   New  OleDbCommand()
objCmd.CommandText 
=   " SELECT Count(*) FROM Users "
objCmd.Connection 
=  objCon
'  取得DataReader物件的記錄數
objDataReader  =  objCmd.ExecuteReader()
objDataReader.Read()
intMaxRec 
=  objDataReader.GetValue( 0 )
objDataReader.Close() 
'  關閉DataReader物件
'
 第二次取得記錄內容
objCmd.CommandText  =   " SELECT * FROM Users "
objDataReader 
=  objCmd.ExecuteReader()
'  取得欄位數目
intFCount  =  objDataReader.FieldCount  -   1
'  是否有查詢到記錄 
If  intMaxRec  >   0   Then
  
'  計算開始的記錄
  intStartRec  =  intPageSize  *  (intPageNo  -   1 +   1
  
'  計算結束的記錄
  intStopRec  =  intStartRec  +  intPageSize  -   1
  
'  計算頁數
  intMaxPageCount  =  intMaxRec  \  intPageSize
  
If  (intMaxRec  MOD  intPageSize)  >   0   Then
    intMaxPageCount 
=  intMaxPageCount  +   1
  
End   If
  Response.Write(
" <table border=1><tr> " )
  
'  顯示資料庫的欄位名稱
   For  intI  =   0   to  intFCount
      Response.Write(
" <td><b> "   &  objDataReader.GetName(intI)  &   " </b></td> " )
  
Next
  Response.Write(
" </tr> "
  intCount 
=   0
  
'  顯示資料表的記錄
   While  objDataReader.Read()  AND  intCount  <  intStopRec
    intCount 
=  intCount  +   1
    
If  intCount  >=  intStartRec  Then
      Response.Write(
" <tr> " )
      
'  顯示每筆記錄的欄位 
       For  intI  =   0   to  intFCount
         
If  objDataReader.IsDBNull(intI)  =   False   Then
           Response.Write(
" <td valign=""top""> "   &  objDataReader.Item(intI)  &   " </td> " )
         
Else
           Response.Write(
" <td valign=""top"">---</td> " )
         
End   If
      
Next
      Response.Write(
" </tr> " )
    
End   If  
  
End   While
  Response.Write(
" </table> " )
  objDataReader.Close() 
'  關閉DataReader
  Response.Write( " 一共有 "   &  intMaxRec  &   " 筆<br> " )
  
'  目前的頁數
  Response.Write( " 目前為第 "   &  intPageNo  &   " 頁/總共有 "   &  intMaxPageCount  &   " 頁<br> " )
  
'  建立數字的超連結
   Dim  strURL, intPreviousPageNo, intNextPageNo 
  
For  intI  =   1   To  intMaxPageCount
    strURL 
=   " <a href='Ch10-2-3.aspx?PageNo= "   &  intI
    strURL 
=  strURL  &   " &PageSize= "   &  intPageSize  &   " '> "   &  intI  &   " </a> "
    Response.Write(strURL 
&   "   " )
    
If  intI  mod   10   =   0   Then
       Response.Write(
" <br> " )
    
End   If
  
next
  
'  上一頁的超連結
  intPreviousPageNo  =  intPageNo  -   1
  
If  intPreviousPageNo  >   0   Then
    strURL 
=   " <a href='Ch10-2-3.aspx?PageNo= "   &  intPreviousPageNo
    strURL 
=  strURL  &   " &PageSize= "   &  intPageSize  &   " '>上一頁</a> "
    Response.Write(strURL 
&   "   " )
  
End   If
  
'  下一頁的超連結
  intNextPageNo  =  intPageNo  +   1
  
If  intNextPageNo  <=  intMaxPageCount  Then
    strURL 
=   " <a href='Ch10-2-3.aspx?PageNo= "   &  intNextPageNo
    strURL 
=  strURL  &   " &PageSize= "   &  intPageSize  &   " '>下一頁</a> "
    Response.Write(strURL 
&   "   " )
  
End   If  
End   If
objCon.Close() 
'  關閉資料庫連結
% >
</ body >
</ html >

你可能感兴趣的:(reader)