用ASP與SQL Server2000編程分頁顯示記錄的通用方法

來源:互聯網
上載者:User
server|server2000|sql|編程|分頁|顯示

  用ASP與SQL Server2000編程分頁顯示記錄的通用方法

  在工作中,因為需要,需要一個網路查詢系統,所以進行了網頁設計。以前進行網頁編程時經常使用PHP語言和MySQL資料庫,此次,因為限制,必須用ASP語言和SQL Server2000,所以對此進行了一些研讀。發現,SQL Server和ASP配合沒有象MySQL那樣的

  Select ... limit ...

語句從某條記錄開始只取需要的記錄的功能,顯得比較不方便。

 要查詢資訊,瀏覽記錄,有時記錄量很大,需要分頁顯示。我作了一個通用的函數,使用起來非常方便。在網頁中定義表頭,用此函數根據查詢條件產生查詢結果形成查詢內容。

 我在此只截取了我程式中的一部分並作了一些修改,對說明此功能已經足夠。主要是下面的

  f_multipage_disp

過程,在需要時調用它即可。我的程式的一個特點,就是模組化。對於所有進行資料庫表操作的語句都在一個檔案中,比如test_dbf.asp中。這樣,查詢調試都很方便。

 我對程式沒有作多少註解,因為太簡單,相信你一看就明白。

 當然,你也可以對此改造,有什麼好的方法和建議可給我郵件,我當非常感謝。

test_dbf.asp檔案:

<%
 '作者:王朋武
 '日期:2007, 5, 29
 '目的:分布顯示網頁的通用方法
 '聯絡:darlingpeng@sina.com; pengwuwang@sohu.com
 '語言:ASP, SQL Server 2000

 set l_conn = Server.CreateObject("ADODB.Connection") '定義串連
 l_conn.Open "FILEDSN=C:\Program Files\Common Files\ODBC\Data Sources\warehouse.dsn;Uid=sa;Pwd=123" '開啟串連
 Set l_rs = Server.CreateObject("ADODB.RecordSet") '產生記錄集

 function f_multipage_disp(l_url, l_seek, l_value, l_action, l_page, l_count) '多頁顯示 
  if l_rs.RecordCount <= 0 then Response.End '沒有資訊

  l_rs.PageSize = g_page_size 'g_page_size為宣言的頁大小
  l_pages = (l_rs.RecordCount \ g_page_size)
  if l_rs.RecordCount mod g_page_size <> 0 then l_pages = l_pages + 1 '求頁數
  select case l_action
   case "首頁" l_page = 1
   case "前頁" l_page = l_page - 1
   case "後頁" l_page = l_page + 1
   case "末頁" l_page = l_pages
  end select
  if l_page < 1 then l_page = 1
  if l_page > l_pages then l_page = l_pages  
  l_rs.AbsolutePage = l_page    
  l_ret = "<tr><td colspan='" + CStr(l_count) + "' align='right'>"
  l_ret = l_ret + "<form method='POST' action='" + l_url + "'>"
  l_ret = l_ret + "第" + CStr(l_page) + "/" + CStr(l_pages) + "頁 "
  l_ret = l_ret + "<input type='hidden' name='page' value='" + CStr(l_page) + "'>"
  if l_pages > 1 then
   if l_page > 1 then
    l_ret = l_ret + "<input type='submit' name='do' value='首頁'> "
    l_ret = l_ret + "<input type='submit' name='do' value='前頁'> "
   end if
   if l_page < l_pages then
    l_ret = l_ret + "<input type='submit' name='do' value='後頁'> "
    l_ret = l_ret + "<input type='submit' name='do' value='末頁'> "    
   end if
  end if
  l_ret = l_ret + "</form>"
  l_ret = l_ret + "</td></tr>"
  f_multipage_disp = l_ret
 end function

 sub f_disp_value(l_seek, l_value, l_action, l_page) '顯示資訊
  str_where = ""
  select case l_seek
   case "姓名"
    str_where = " where f_name like '%" + l_value + "%'"
   case "學校"
    str_where = " where f_school like '%" + l_value + "%'"
  end select
  l_sql = "select f_name as 姓名,f_gender as 性別,f_school as 學校,f_city as 城市,f_pcode as 郵編,f_email as 郵箱,f_tel as 電話,f_addr as 地址,f_memo as 備忘 from t_test" + str_where + " order by f_name,f_gender"
  l_rs.Open l_sql, l_conn, 1, 1  
  l_ret = f_multipage_disp("t_test2.asp", l_seek, l_value, l_action, l_page, 9) '調用函數,注意最後一個參數9
  dim l_s(8)  
  j = 0
  do while not l_rs.eof and j < g_page_size
   j = j + 1
   for i=0 to 8
    l_s(i) = l_rs(i)
    if isnull(l_s(i)) then l_s(i) = " "
   next
   Response.Write("<tr bgcolor='eeeeee' valign='top'><td>" _
   + l_s(0) + "</td><td>" _
   + l_s(1) + "</td><td>" _
   + l_s(2) + "</td><td>" _
   + l_s(3) + "</td><td>" _
   + l_s(4) + "</td><td>" _
   + l_s(5) + "</td><td>" _
   + l_s(6) + "</td><td>" _
   + l_s(7) + "</td><td>" _
   + l_s(8) + "</td></tr>")
   l_rs.MoveNext
  loop
  Response.Write(l_ret)
  l_rs.Close
 end Sub
%>

test.asp檔案

<%
 if Request.ServerVariables("REQUEST_METHOD") = "POST" Then
  Session("si_msel") = Request.Form("select_value")
  Session("si_mval") = Request.Form("txt_value")
  l_seek = Session("si_msel")
  l_value = Session("si_mval")
  l_page = Request.Form("page")
  l_action = Request.Form("do")
 end if
%>

<html>
<head>
<title>查詢系統</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link href="css/normal.css" rel="stylesheet" type="text/css">
</head>
<body>
<div align="center" class="cap_text">資訊查詢表
  <table width="90%" border="0" cellspacing="0" cellpadding="0">
    <tr>
      <td><form name="form1" method="post" action="test.asp">
          查詢條件:
          <select name="select_value">
            <option <% if Session("si_msel") = "名稱" then Response.Write("selected") %>>名稱</option>
            <option <% if Session("si_msel") = "學校" then Response.Write("selected") %>>學校</option>
          </select>
          <input type="text" name="txt_value" value="<% =Session("si_oval") %>">
          <input type="submit" name="Submit" value="查詢">
        </form></td>
    </tr>
  </table>
</div>
<table width="90%" border="0" align="center" cellpadding="2">
  <tr bgcolor="#CCCCCC">
 <td width="12%">姓名</td>
 <td width="5%">性別</td>
    <td width="10%">學校</td>
    <td width="15%">城市</td>
    <td width="5%">郵編</td>
    <td width="10%">郵箱</td>
    <td width="8%">電話</td>
    <td width="11%">地址</td>
    <td width="26%">備忘</td>   
  </tr>
  <!-- #include file=test_dbf.asp -->
  <%
 call f_disp_value(l_seek, l_value, l_action, l_page)
  %>
</table>
</body>
</html>



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.