回 帖 发 新 帖 刷新版面

主题:联合查询+分页

<%@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>&nbsp;</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 楼

这一个程序放在记事本里就可以动行了吗???????

12 楼

这一个程序放在记事本里就可以动行了吗???????

13 楼

确实要给斑竹顶一顶
这么好的地方要给顶起来

14 楼

<!--#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 楼

<!--#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 楼

我也来一个!


<%
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 "&nbsp;<a href="&strquote&strscriptname&_
                   "?page=1"&strquote&">第一页</a>"

if page=1 then
    response.write "&nbsp;<span>previous page</span>"
  else
    response.write "&nbsp;<a href="&strquote&sme&_
                    "?page="&intpage-1&strquote&">先前页</a>"
end if

if intpage=rsdata.PageCount then
   response.write "&nbsp;<span>下一页</span>"
else
   response.write "&nbsp;<a href="&strquote&strscriptname&_
                     "?page="&intpage+1&strquote&">下一页</a>"
end if
response.write "&nbsp;<a href="&strquote&strscriptname&_
                 "?page="&rsdata.PageCount&strquote&">最后一页</a>"


rsdata.close
set rsdata=nothing
conn.close
set conn=nothing
%>

17 楼

我也来发一个了,这段代码可以设定每页中要显示数据库记录的条数以及共有多少页,还有当前页和总页数。
<%@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> &nbsp;&nbsp;"
    Response.Write "<a href=index1.asp?Page=" & (Page-1) & ">上一页</a> &nbsp;&nbsp;"
End if
if  Page<>rs.PageCount then
    Response.Write "<a href=index1.asp?Page=" & (Page+1) & "> 下一页</a> &nbsp;&nbsp;"
    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 楼

问题:
我在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 楼

提出问题没人回答,或回答不好,当然没人爱来了!

20 楼

大哥,不懂呀!

我来回复

您尚未登录,请登录后再回复。点此登录或注册