主题:联合查询+分页
绝对零度
[专家分:820] 发布于 2003-12-18 13:42:00
<%@language=VBScript%>
<%Option Explicit%>
<!--#include file="../Lib/Config.asp"-->
<!--#include file="../Lib/FormElement.asp"-->
<!--#include file="../Lib/StringFunctions.asp"-->
<%
Dim conMIS
Set conMIS = Server.CreateObject("ADODB.Connection")
conMIS.Open g_strDbConnection
Dim rsList, sqlSn, PageNo, intPageNo, intPageSize, i, strProxyName, strSchoolName, strCourseName, strTeacherName, strClientContact, strSchoolProvince, dtReceiveMoneyTime, lngUserId
Dim ProxyName, SchoolName, CourseName, TeacherName, ClientContact, SchoolProvince, ReceiveMoneyTime, UserId
intPageNo = Request.QueryString ("PageNo")
strProxyName = Request.QueryString("ProxyName")
strSchoolName = Request.QueryString ("SchoolName")
strCourseName = Request.QueryString ("CourseName")
strTeacherName = Request.QueryString ("TeacherName")
strClientContact = Request.QueryString ("ClientContact")
strSchoolProvince = Request.QueryString ("SchoolProvince")
dtReceiveMoneyTime = Request.QueryString ("ReceiveMoneyTime")
lngUserId = Clng(Request.QueryString ("UserId"))
Set rsList=server.CreateObject("ADODB.Recordset")
sqlSn = "SELECT s.*, p.id AS ProvinceId, p.Name AS ProvinceName, l.id AS LogonId, l.UserName AS LogonUserName"
' sqlSn = sqlSn & " FROM (Logon INNER JOIN (CodeProvince INNER JOIN Sn ON CodeProvince.id=Sn.SchoolProvince) ON Logon.id=Sn.Userid)"
sqlSn = sqlSn & " FROM ((Sn s INNER JOIN Logon l ON s.UserId = l.Id)"'Sn为主表联合查询表CodeProvince和表Logon
sqlSn = sqlSn & " INNER JOIN CodeProvince p ON s.SchoolProvince = p.Id)"
sqlSn = sqlSn & " WHERE 1 = 1"
If ( strProxyName <> "" ) Then sqlSn = sqlSn & " AND (s.ProxyName LIKE '%" & strProxyName & "%')"'如果strProxyName值不为空则执行strProxyName值的查询
If ( strSchoolName <> "" ) Then sqlSn = sqlSn & " AND (s.SchoolName LIKE '%" & strSchoolName & "%')"
If ( strCourseName <> "" ) Then sqlSn = sqlSn & " AND (s.CourseName LIKE '%" & strCourseName & "%')"
If ( strTeacherName <> "" ) Then sqlSn = sqlSn & " AND (s.TeacherName LIKE '%" & strTeacherName & "%')"
If ( strSchoolProvince > 0 ) Then sqlSn = sqlSn & " AND (s.SchoolProvince =" & strSchoolProvince & ")"
If ( dtReceiveMoneyTime <> "" ) Then sqlSn = sqlSn & " AND (DateDiff('d', s.ReceiveMoneyTime, '" & CDate(dtReceiveMoneyTime) & "') = 0)"
If ( lngUserId > 0 ) Then sqlSn = sqlSn & " AND (l.Id = " & lngUserId & ")"
sqlSn = sqlSn & " ORDER BY s.Id DESC"
If intPageNo = "" Then'如果当前页数为空的话
PageNo=1'则当前页数为1
Else
PageNo=intPageNo'否则为Request.QueryString ("PageNo")
End If
rsList.Open sqlSn, conMIS, 3, 1
intPageSize = PAGE_SIZE'一页显示10条记录,常数
%>
<html>
<head>
<link href="../Css/css.css" rel="stylesheet" type="text/css">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body bgcolor="#e1e1e1" background="../Images/Background.gif" topmargin="0">
<form action="SnList.asp" name="list" method="get">
<div align="center">
<br>
<table rules="rows" width="100%" border="1" align="center" cellpadding="3" cellspacing="0" bordercolor="#cccccc" bordercolorlight="#666666" bordercolordark="#ffffff">
<tr class="text">
<td rowspan="3"><div align="center">选择搜索内容
</div>
</td>
<td><div align="left">
产品版本 <input name="ProxyName" type="text" class="input" id="ProxyName">
</div>
</td>
<td><div align="left">教师名称 <input name="TeacherName" type="text" class="input" id="TeacherName">
</div>
</td>
<td><div align="left">收到汇款的时间 <input name="ReceiveMoneyTime" type="text" class="input" id="ReceiveMoneyTime3">
</div>
</td>
</tr>
<tr class="text">
<td><div align="left">
学校名称 <input name="SchoolName" type="text" class="input" id="SchoolName">
</div>
</td>
<td><div align="left">
</div>
<div align="left">
</div>
<div align="left">
</div>
<div align="left">
</div>
<div align="left">经手人
<%=g_htmlTableToSelect(conMIS, "SELECT Id, UserName FROM LogOn WHERE [Level] = 1 ORDER BY UserName ASC", "UserId", -1, "请选择经手人...")%>
</div>
</td>
<td> </td>
</tr>
<tr class="text">
<td>
课程名称 <input name="CourseName" type="text" class="input" id="CourseName"></td>
<td>省份
<%=g_htmlTableToSelect(conMIS, "SELECT Id, Name FROM CodeProvince ORDER BY Id ASC", "SchoolProvince", -1, "请选择省份...")%>
</td>
<td><div align="center">
<input type="image" src="../Images/Search.gif" name="Submit">
</div>
</td>
</tr>
</table>
<br>
<%
If (Not rsList.EOF) Then
rsList.PageSize = intPageSize'规定一页显示10条记录
rsList.CacheSize = intPageSize
rsList.AbsolutePage = PageNo'显示当前第几页
%>
<table width="100%" frame=box border="1" align="center" cellpadding="0" cellspacing="0" bordercolor="#cccccc" bordercolorlight="#666666" bordercolordark="#ffffff">
<tr bgcolor="#cccccc" class="text">
<td> <div align="center">产品版本</div></td>
<td> <div align="center">学校名称</div></td>
<td> <div align="center">课程名称</div></td>
<td> <div align="center">教师名称</div></td>
<td> <div align="center">联系人</div></td>
<td> <div align="center">省份</div></td>
<td> <div align="center">收到汇款的时间</div></td>
<td> <div align="center">经手人</div></td>
<td><div align="center">详情</div></td>
</tr>
<%
i = 0
DO while(Not rsList.EOF) and ( i < intPageSize)
%>
<tr class="text">
<td height="20"> <div align="center">
<% Call ShowListColor(strProxyName, "ProxyName") %>
</div></td>
<td><div align="center">
<% Call ShowListColor(strSchoolName, "SchoolName") %>
</div></td>
<td><div align="center">
<% Call ShowListColor(strCourseName, "CourseName") %>
</div></td>
<td><div align="center">
<% Call ShowListColor(strTeacherName, "TeacherName") %>
</div></td>
<td><div align="center">
<% Call ShowListColor(strClientContact, "ClientContact") %>
</div></td>
<td><div align="center">
<% Call ShowListColor2(strSchoolProvince, "ProvinceName") %>
</div></td>
<td><div align="center">
<% Call ShowListColor(dtReceiveMoneyTime, "ReceiveMoneyTime") %>
</div></td>
<td><div align="center">
<% Call ShowListColor2(lngUserId, "LogonUserName") %>
</div></td>
<td><div align="center"><a href =ShowSn.asp?ShowSnid=<% =rsList("id") %>>查看</a></div></td>
</tr>
<%
i = i + 1
rsList.MoveNext
Loop
Else
Response.Redirect("searcherror.asp")
End IF
%>
</table>
</div>
</form>
<table width="100%" border="0">
<tr>
<td align="right">
<font class="text">首页
<%
Response.Write("|")
For i=1 To rsList.PageCount
If strSchoolProvince > 0 Then
Response.Write("<a href=SnList.asp?PageNo=" & i & "&ProxyName="&strProxyName&"&SchoolName="&strSchoolName&"&CourseName="&strCourseName&"&TeacherName="&strTeacherName&"&ClientContact="&strClientContact&"&SchoolProvince="&strSchoolProvince&">"&cstr(i)&"</a>")
ElseIf dtReceiveMoneyTime <> "" Then
Response.Write("<a href=SnList.asp?PageNo=" & i & "&ProxyName="&strProxyName&"&SchoolName="&strSchoolName&"&CourseName="&strCourseName&"&TeacherName="&strTeacherName&"&ClientContact="&strClientContact&"&ReceiveMoneyTime="&dtReceiveMoneyTime&">"&cstr(i)&"</a>")
ElseIf lngUserId > 0 Then
Response.Write("<a href=SnList.asp?PageNo=" & i & "&ProxyName="&strProxyName&"&SchoolName="&strSchoolName&"&CourseName="&strCourseName&"&TeacherName="&strTeacherName&"&ClientContact="&strClientContact&"&UserId="&lngUserId&">"&cstr(i)&"</a>")
Else
Response.Write("<a href=SnList.asp?PageNo=" & i & "&ProxyName=" & strProxyName & "&SchoolName="&strSchoolName&"&CourseName="&strCourseName&"&TeacherName="&strTeacherName&"&ClientContact="&strClientContact&">"&cstr(i)&"</a>")
End If
If i<>rsList.PageCount Then
Response.Write("|")
End If
Next
Response.Write("|")
%>
尾页</font>
</td>
</tr>
</table>
</body>
</html>
回复列表 (共59个回复)
11 楼
海王之子 [专家分:0] 发布于 2004-11-19 12:50:00
这一个程序放在记事本里就可以动行了吗???????
12 楼
海王之子 [专家分:0] 发布于 2004-11-19 12:51:00
这一个程序放在记事本里就可以动行了吗???????
13 楼
chenxiao2008 [专家分:0] 发布于 2005-03-08 18:29:00
确实要给斑竹顶一顶
这么好的地方要给顶起来
14 楼
flok [专家分:0] 发布于 2005-04-04 09:26:00
<!--#include file="adovbs.inc"-->
<!--#include file="showpage.asp" -->
<% Session("Name1") = Request("Name1")
Session("Name2") = Request("Name2")
%>
<%
dim objconn
Set objconn = Server.CreateObject("ADODB.Connection")
'打开数据库
strconn="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("Salary.mdb")
objconn.Open strconn
dim strSQL
dim rs
set rs=Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT * FROM yhdjk inner join byjyqk on yhdjk.ID_YH=byjyqk.ID_YH WHERE (INT(DateValue(yhdjk.出生年月))>'" & Session("Name1") & "') and (INT(DateValue(yhdjk.出生年月))<'" & Session("Name2") & "')"
rs.Open strSQL,objconn,1,1,1
%>
<html>
<body background="images\ROSE1.JPG">
<style type="text/css">
<!--
a { text-decoration: none}
a:hover { color: #FF3333; }
.topnavbar { font-size: 12px; color: black}
-->
</style>
<%
rs.pagesize=12 ' 每页最多显示12条纪录
'从URL获取当前要显示的页
page=cint(request("page"))
'页面参数异常处理
if page="" then
page=1
end if
if page<1 then
page=1
end if
if page>=rs.pagecount then
page=rs.pagecount
end if
ShowPage rs,page
%>
<br><br><br>
<div align=center>
<form action="dayin.asp" method="post">
<%
if page>1 then
response.write "<a href="&request.servervariables("document_name")&"?page=1>第一页</a> "
response.write "<a href="&request.servervariables("document_name")&"?page="&(page-1)&">上一页</a> "
end if
if page<>rs.pagecount then
response.write "<a href="&request.servervariables("document_name")&"?page="&(page+1)&">下一页</a> "
response.write "<a href="&request.servervariables("document_name")&"?page="&rs.pagecount&">最后一页</a> "
end if
%>
<p>输入页号:<input type=text name="PageText" value="<%=page%>" size=3>
总页数:<font color="red"><%=rs.PageCount%></font></p>
<a href="page.asp">返回管理首页</a>
</form></div>
<%
'关闭数据库连接并释放对象
rs.Close
Set rs = Nothing
objConn.Close
Set objConn = Nothing
%>
</body>
<html>
showpage.asp
<%
Sub ShowPage(rs,Page)
Response.write"<table border=1> "
data="<tr>"
for i=1 to rs.Fields.Count-1
data=data &"<td>" & rs.Fields(i).Name & "</td>"
next
Response.write data & "</tr>"
rs.AbsolutePage=Page
'读取各个字段的数据并显示在表格内
for i=1 to rs.PageSize
data="<tr>"
for j=1 to rs.Fields.Count-1
data=data &"<td>"& rs.Fields(j).value & "</td>"
next
Response.write data &"</tr>"
rs.MoveNext
if rs.eof then
exit for
end if
next
response.write"</table>"
End Sub
%>
为什么一点下一页,就出错误:
ADODB.Recordset 错误 '800a0bb9'
变量或者类型不正确,或者不在可以接受的范围之内,要不就是与其他数据冲突。
/sqglw/sqgl/showpage.asp, 行10
15 楼
flok [专家分:0] 发布于 2005-04-04 09:33:00
<!--#include file="adovbs.inc"-->
<!--#include file="showpage.asp" -->
<% Session("Name1") = Request("Name1")
Session("Name2") = Request("Name2")
%>
<%
dim objconn
Set objconn = Server.CreateObject("ADODB.Connection")
'打开数据库
strconn="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("Salary.mdb")
objconn.Open strconn
dim strSQL
dim rs
'set rs=GetRecordset("Salary.mdb","yhdjk")
set rs=Server.CreateObject("ADODB.RecordSet")
strSQL = "SELECT * FROM yhdjk inner join byjyqk on yhdjk.ID_YH=byjyqk.ID_YH WHERE (INT(DateValue(yhdjk.出生年月))>'" & Session("Name1") & "') and (INT(DateValue(yhdjk.出生年月))<'" & Session("Name2") & "')"
rs.Open strSQL,objconn,1,1,1
'rs.Filter="SELECT * FROM yhdjk inner join byjyqk on yhdjk.ID_YH=byjyqk.ID_YH WHERE (INT(DateValue(yhdjk.出生年月))>'" & Session("Name1") & "') and (INT(DateValue(yhdjk.出生年月))<'" & Session("Name2") & "')"
%>
<html>
<body background="images\ROSE1.JPG">
<style type="text/css">
<!--
a { text-decoration: none}
a:hover { color: #FF3333; }
.topnavbar { font-size: 12px; color: black}
-->
</style>
<%
rs.pagesize=12 ' 每页最多显示12条纪录
'从URL获取当前要显示的页
page=cint(request("page"))
'页面参数异常处理
if page="" then
page=1
end if
if page<1 then
page=1
end if
if page>=rs.pagecount then
page=rs.pagecount
end if
ShowPage rs,page
%>
<br><br><br>
<div align=center>
<form action="dayin.asp" method="post">
<%
if page>1 then
response.write "<a href="&request.servervariables("document_name")&"?page=1>第一页</a> "
response.write "<a href="&request.servervariables("document_name")&"?page="&(page-1)&">上一页</a> "
end if
if page<>rs.pagecount then
response.write "<a href="&request.servervariables("document_name")&"?page="&(page+1)&">下一页</a> "
response.write "<a href="&request.servervariables("document_name")&"?page="&rs.pagecount&">最后一页</a> "
end if
%>
<p>输入页号:<input type=text name="PageText" value="<%=page%>" size=3>
总页数:<font color="red"><%=rs.PageCount%></font></p>
<a href="page.asp">返回管理首页</a>
</form></div>
<%
'关闭数据库连接并释放对象
rs.Close
Set rs = Nothing
objConn.Close
Set objConn = Nothing
%>
</body>
<html>
showpage.asp
<%
Sub ShowPage(rs,Page)
Response.write"<table border=1> "
data="<tr>"
for i=1 to rs.Fields.Count-1
data=data &"<td>" & rs.Fields(i).Name & "</td>"
next
Response.write data & "</tr>"
rs.AbsolutePage=Page
'读取各个字段的数据并显示在表格内
for i=1 to rs.PageSize
data="<tr>"
for j=1 to rs.Fields.Count-1
data=data &"<td>"& rs.Fields(j).value & "</td>"
next
Response.write data &"</tr>"
rs.MoveNext
if rs.eof then
exit for
end if
next
response.write"</table>"
End Sub
%>
为什么 一点下一页,就出现错误:
ADODB.Recordset 错误 '800a0bb9'
变量或者类型不正确,或者不在可以接受的范围之内,要不就是与其他数据冲突。
/sqglw/sqgl/showpage.asp, 行10
16 楼
yuanli [专家分:0] 发布于 2005-04-12 22:38:00
我也来一个!
<%
Dim rsdata
Dim intpage
Dim fldf
Dim intrec
Dim strquote
Dim strscriptname
strquote=chr(34)
set rsdata=server.createobject("ADODB.Recordset")
sql="select * from test"
rsdata.open sql,conn,1,1
rsdata.PageSize=4
if request.querystring("page")="" then
intpage=1
else
if intpage<1 then
intpage=1
else
if intpage>rsdata.PageCount then
intpage=rsdata.PageCount
else
intpage=CInt(request.form("page"))
end if
end if
end if
rsdata.AbsolutePage=intpage
response.write "<table border=1 cellspacing=0 cellpadding=0 bordercolor=#8F8F8F width=200><thead><tr>"
for each fldf in rsdata.fields
response.write "<td bgcolor=#99CC00 alain=certen>"&fldf.name&"</td>"
next
response.write "</tr></thead><tbody>"
for intrec=1 to rsdata.pagesize
if not rsdata.eof then
response.write "<tr>"
for each fldf in rsdata.fields
response.write "<td bgcolor=f5f5f5>"&fldf.value&"</td>"
next
response.write "</tr>"
rsdata.movenext
end if
next
response.write "</tbody></thead></table><p>"
strscriptname=request.servervariables("SCRIPT_NAME")
response.write " <a href="&strquote&strscriptname&_
"?page=1"&strquote&">第一页</a>"
if page=1 then
response.write " <span>previous page</span>"
else
response.write " <a href="&strquote&sme&_
"?page="&intpage-1&strquote&">先前页</a>"
end if
if intpage=rsdata.PageCount then
response.write " <span>下一页</span>"
else
response.write " <a href="&strquote&strscriptname&_
"?page="&intpage+1&strquote&">下一页</a>"
end if
response.write " <a href="&strquote&strscriptname&_
"?page="&rsdata.PageCount&strquote&">最后一页</a>"
rsdata.close
set rsdata=nothing
conn.close
set conn=nothing
%>
17 楼
tokeyfish2003 [专家分:20] 发布于 2005-04-14 09:32:00
我也来发一个了,这段代码可以设定每页中要显示数据库记录的条数以及共有多少页,还有当前页和总页数。
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>‘指明使用的脚本语言
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>asp</title>
</head>
<body>
<%
’连接数据库
Set Conn=Server.CreateObject("ADODB.Connection")
Conn.Open "PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=数据库路径"
set rs=Server.CreateObject("ADODB.Recordset")
rs.CursorType=asOpenStatic
rs.Open "select * from asp",Conn,1,3‘数据库中表的打开方式
rs.PageSize=每页显示记录条数
’计算页数
Page=CLng(Request("Page"))
if Page<1 Then Page=1
if Page>rs.PageCount then Page=rs.PageCount
%>
<table width="100%" border="1" align="center" bordercolor="#0011FF" bgcolor="#CCCCCC">
<tr>
<td>序号</td>
<%
for i=0 to rs.Fields.Count-1
Response.Write "<td>" & rs.Fields(i).name & "</td>"‘记录的标题
next
%>
</tr>
<%
rs.absolutepage=page
for iPage=1 to rs.PageSize
RecNo=(Page-1)*rs.PageSize+iPage
%>
<tr>
<td>
<div align="center">
<% =RecNo %>’序号
</div></td>
<%
for i=0 to rs.Fields.Count-1
%>
<td>
<% =rs.Fields(i).Value %>‘记录内容
</td>
<% next %>
</tr>
<%
rs.MoveNext
if rs.EOF then Exit for
Next
%>
</table>
<p align="center">
<%
if Page <>1 Then
Response.Write "<a href=index1.asp?Page=1> 第一页 </a> "
Response.Write "<a href=index1.asp?Page=" & (Page-1) & ">上一页</a> "
End if
if Page<>rs.PageCount then
Response.Write "<a href=index1.asp?Page=" & (Page+1) & "> 下一页</a> "
Response.Write "<a href=index1.asp?Page=" & rs.PageCount & ">最后一页</a>"
End if
%>
</p>
<p align="center">页数:<% =Page %> / <% =rs.PageCount %>
</p>
<p>
<%
rs.close
Conn.close
set rs=nothing
set conn=nothing
%>
</p>
<p><a href="index.asp">返回</a></p>
</body>
</html>
18 楼
贝司 [专家分:0] 发布于 2005-05-20 09:00:00
问题:
我在Access中有两个数据表:歌手 详细信息
歌手中有字段id,歌手名
详细信息中有字段id,歌名,歌手,歌曲类别,备注
现在我将数据表歌手的歌手显示在页面上,并设置超链接,链接页将显示数据表详细信息中所有歌手名和数据
表歌手中的歌手名相同的数据。
我是这样做的:
显示歌手名的页面geshou.asp中的语句:
<a href="geshoulist_xs.asp?geshou=<%=rs("歌手")%>"><%=rs("歌手")%></a>
链接页geshoulist_xs.asp中的语句:
exec="select * from 详细信息 where 歌手="&request.querystring("geshou")
无论怎么样就是出错!!!换成id号就没有问题,但却不能把信息对应起来。
19 楼
php51net [专家分:0] 发布于 2005-06-02 15:18:00
提出问题没人回答,或回答不好,当然没人爱来了!
20 楼
浪子行空 [专家分:0] 发布于 2005-06-03 17:41:00
大哥,不懂呀!
我来回复