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>