回 帖 发 新 帖 刷新版面

主题:[讨论]急!!!求助一ASP报错问题

请各位高手帮忙看看,以下是我的一个文件搜索页面,是按关键字和日期同时满足两者条件进行的搜索
程序存在有两个问题:
错误类型:
ADODB.Recordset (0x800A0BB9)
参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。
/hqjtims/searchdoc.asp, 第 50 行(出错语句为:rs.AbsolutePage = rs.PageCount     
 2.程序中有**年至**年的搜索功能
我用range1和range2分别接收起始年月日提交的内容,但不知道怎么实现用一个变量(srange)来接收上述二者的内容,因为想在程序某处显示:你输入的关键字为:<font color="#ff0000"><strong><%=sKeyWord%></strong></font>,所选择的检索范围为:<font color="#ff0000"><strong><%=srange%></strong></font>,搜索结果如下表所示:</td>
源代码如下:
<!--#include file="conn.asp"-->
<!--#include file="showpage.asp"-->

<%if session("admin")  = "" then
    response.redirect "logincha.asp"
    response.end
end if
%>

<%dim ID
    
    page=trim(request.QueryString("page"))
    nPage = trim(request.querystring("page"))


Dim sKeyWord,sRange,range1,range2,keyword,page,sql,nPage,i,nCurCount
sKeyWord = trim(request.form("keyword"))
range1 = GetSafeStr(Trim(Request("range1")))
range2 = GetSafeStr(Trim(Request("range2")))

if sKeyWord<>"" then 
    sKeyWord = ReplaceBadChar(sKeyWord)    '过滤非法的SQL字符
else
    sKeyWord = trim(request.querystring("keyword"))
end if
if( range1 = "" ) then
    range1 = trim(request.querystring("range1"))
end if
if( range2 = "" ) then
    range2= trim(request.querystring("range2"))
end if
Set rs = Server.CreateObject("ADODB.Recordset") 
sql = "Select FileName,Btime from News where FileName like '%"&sKeyWord&"%' and Btime between  '%"&range1&"%' and '%"&range2&"%'"
    rs.open sql,conn,1,3    

    rs.pagesize =    20

    if Not IsEmpty(page) then     
        if Not IsNumeric(page) then    
            page=1    
        Else
            If page < 1 Then
                page = 1
            else
                page = cint(page)
            End if
        end if       

        if page > rs.PageCount then         
            rs.AbsolutePage = rs.PageCount           
        elseif page <= 0 then    
            rs.AbsolutePage = 1 
        else        
            rs.AbsolutePage = page 
        end If
    Else
        page = 1
        rs.AbsolutePage=1
    end If

%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<link rel="stylesheet" type="text/css" href="Css.css">
<title>文件信息搜索</title>

<Script Language="Javascript">
function unSelectAll()
{
    if(document.myform.chkAll.checked){    //选中所有状态已经选择时,再取消一个单元的选择时
    document.myform.chkAll.checked = document.myform.chkAll.checked&0;    //原状态取反
    }     
}

function CheckAll()
{
    for (var i=0;i<document.myform.elements.length;i++)
    {
        var e = document.myform.elements[i];
        if (e.Name != "chkAll"&&e.disabled==false)    //非chkAll单元且可操作的单元状态设置
            e.checked = document.myform.chkAll.checked;
    }
}

function ConfirmDel()
{
    var flag = false;
    for(var i=0; i < document.myform.elements.length; i++)
    {
        if(document.myform.elements[i].checked){
            flag = true;
            break;
        }
    }
    if( flag == false )
        return false;
    if(confirm("确定要彻底删除选中的信息吗?一旦删除将不能恢复!"))
        return true;
    else
        return false;
}

</Script>

</head>

<body>
<table width="100%"  border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td><div align="center"><b>文件搜索</b></div></td>
  </tr>
  <tr>
    <td><hr size="1"></td>
  </tr>
</table>
<form name="SearchForm" method="post" action="search.asp?action=search">    <!--信息搜索表单-->
<table width="100%"  border="0" cellpadding="3" cellspacing="1" bgcolor="#999999">
  <tr>
    <td bgcolor="#F5C84E"> 1、请输入关键字:
      <input type="text" name="keyword">       
     2、请选择检索时间:
      <select name="range1" size="1" id="select2">
        <option value="2005-01-01">2005-01-01</option>
        <option value="2005-07-01">2005-07-01</option>
        <option value="2006-01-01">2006-01-01</option>
        <option value="2006-07-01">2006-07-01</option>
        <option value="2007-01-01">2007-01-01</option>
        <option value="2007-07-01">2007-07-01</option>
        <option value="2008-01-01">2008-01-01</option>
        <option value="2008-07-01">2008-07-01</option>
        <option value="2009-01-01">2009-01-01</option>
        <option value="2009-07-01">2009-07-01</option>
                                                                              </select>
      至 
      <select name="range2" size="1" id="range2">
        <option value="2005-06-30">2005-06-30</option>
        <option value="2005-12-31">2005-12-31</option>
        <option value="2006-06-30">2006-06-30</option>
        <option value="2006-12-31">2006-12-31</option>
        <option value="2007-06-30">2007-06-30</option>
        <option value="2007-12-31">2007-12-31</option>
        <option value="2008-06-30">2008-06-30</option>
        <option value="2008-12-31">2008-12-31</option>
        <option value="2009-06-30">2009-06-30</option>
        <option value="2009-12-31">2009-12-31</option>
                                                                        </select> 
      3、请点击
      <input name="searchdoc" type="submit" id="searchdoc" value="搜索"></td>
  </tr>
</table>
</form>

<table width="100%"  border="0" cellspacing="0" cellpadding="3">
  <tr>
    <td>  你输入的关键字为:<font color="#ff0000"><strong><%=sKeyWord%></strong></font>,所选择的检索范围为:<font color="#ff0000"><strong><%=range1%></strong></font>,搜索结果如下表所示:</td>
  </tr>
</table>
<%
if( rs.eof ) then
    response.write "<H1><div align='center'>没有找到任何合适的信息!</div></H1>"
else
%>

<form name="myform" method="Post" action="deletedoc.asp?page=<%=nPage%>&action=select" onsubmit="return ConfirmDel();">
<table width="100%"  border="0" cellpadding="2" cellspacing="1" bgcolor="#999999">
  <tr bgcolor="#E1E1E1">
    <td width="6%"><div align="center">状态</div></td>
    <td width="46%"><div align="center">文件名</div></td>

    <td width="12%"><div align="center">加入时间</div></td>
   
    <td width="8%"><div align="center">修改</div></td>
    <td width="8%"><div align="center">删除</div></td>
  </tr>
 
 <%for i=1 to rs.PageSize%>

  <tr bgcolor="#FFFFFF" onmouseout="this.style.backgroundColor=''" onmouseover="this.style.backgroundColor='#F7F8F8'">
    <td><div align="center">
      <input name="sNewsID" type="checkbox" id="sNewsID" value="<%=rs("ID")%>" onClick="unSelectAll()">
    </div></td>
    <td><a href="show.asp?id=<%=rs("ID")%>&page=<%=nPage%>"><%=rs("FileName")%></a></td>
   
    <td><div align="center"><%=rs("Btime")%></div></td>
    
    <td><div align="center"><a href="edit.asp?id=<%=rs("ID")%>&page=<%=nPage%>">修改</a></div></td>
    <td><div align="center"><a href="deletedoc.asp?id=<%=rs("ID")%>&page=<%=nPage%>&action=one">删除</a></div></td>
  </tr>
   <%  
        rs.MoveNext() 
        if rs.eof or rs.bof then exit for 
        next
      %>
    </table>
    <table width="100%" border="1" cellpadding="2" cellspacing="2" borderColorLight=#808080 borderColorDark=#ffffff>
       <tr><td>
                 [<a href="searchdoc.asp?ID=<%=ID%>&page=<% = 1%>">首页</a>]        
          <%    if page >= 1 then%> 
                 [<a href="searchdoc.asp?ID=<%=ID%>&page=<% = page -1 %>">上一页</a>] 
                       <%if page < rs.pagecount then %> 
                         [<a href="searchdoc.asp?ID=<%=ID%>&page=<% = page + 1%>">下一页</a>] 
                       <%else%> 
                            [下一页]
                      <%end if%>
          <%else%> 
             [上一页]
                  [下一页] 
         <%end if %> 
          [<a href="searchdoc.asp?ID=<%=ID%>&page=<% = rs.PageCount%>">尾页</a>]
               [页次:<font color=red><b><%=page%></b></font>/<%=rs.PageCount%>] 
               [每页<b> <%=rs.PageSize%> </b></font>条/共 <%=rs.RecordCount%> 条]
          </td>
      </tr>
        
        
    <tr>
      <td><hr></td>
    </tr>
    <tr>
      <td> 
        <input name="chkAll" type="checkbox" id="chkAll" value="checkbox" onClick="CheckAll()"><!--表单元的名不能与函数同名-->
        全选/取消全选 &nbsp;&nbsp;&nbsp;
        <input type="submit" name="Submit" value=" 删除所选 "></td>
    </tr>
          </table>
  </div>
</form>

      
  
 <p align="center"><a href="file.asp">返回</a></p>


  </tr>
</table>

</body>
</html>
<%
end if
rs.close
set rs = nothing
conn.close
set conn = nothing
%>

回复列表 (共2个回复)

沙发

不要贴一大段代码出来,只要将错误的地方上下几行贴出来就可以了
rs.AbsolutePage = rs.PageCount   
改成
rs.AbsolutePage = rs.Page

板凳


谢谢楼主,我按你的指点改了.不过出现了语法报错:错误类型:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access Driver] 语法错误 (操作符丢失) 在查询表达式 'FileName like '%%' and (## <=Btime <= ## )' 中。
出错语句为:sql = "select ID,FileName,Btime from News where FileName like '%"&sKeyWord&"%' and (#"&range1&"# <=Btime <= #"&range2&"# ) Order By ID desc"     
麻烦再指点一下,多谢!

我来回复

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