主题:  搜索页面的怪问题,求各位大侠帮忙

lixiangwei

职务:普通成员
等级:1
金币:0.0
发贴:57
#12003/7/23 9:41:51
小弟,前天做了一个搜索页面,如果搜索的关键词为“[”或包含有它时,就会提示如下错误。Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)/html/news/search_gj3.asp, 第 76 行,求各位大侠指教。



ryonick

职务:普通成员
等级:2
金币:1.0
发贴:317
#22003/7/23 12:07:38
代码贴出来



lixiangwei

职务:普通成员
等级:1
金币:0.0
发贴:57
#32003/7/23 14:49:52
<%
' *** Restrict Access To Page: Grant or deny access to this page
MM_authorizedUsers="高级"
MM_authFailedURL="../login/error.asp"
MM_grantAccess=false
If Session("MM_Username") <> "" Then
If (false Or CStr(Session("MM_UserAuthorization"))="") Or _
(InStr(1,MM_authorizedUsers,Session("MM_UserAuthorization"))>=1) Then
MM_grantAccess = true
End If
End If
If Not MM_grantAccess Then
MM_qsChar = "?"
If (InStr(1,MM_authFailedURL,"?") >= 1) Then MM_qsChar = "&"
MM_referrer = Request.ServerVariables("URL")
if (Len(Request.QueryString()) > 0) Then MM_referrer = MM_referrer & "?" & Request.QueryString()
MM_authFailedURL = MM_authFailedURL & MM_qsChar & "accessdenied=" & Server.URLEncode(MM_referrer)
Response.Redirect(MM_authFailedURL)
End If
%>
<%
Dim news__MMColParam4
news__MMColParam4 = "%"
If (request.querystring("wh") <> "") Then
news__MMColParam4 = request.querystring("wh")
End If
%>
<%
Dim news__wen
news__wen = "%"
If (request.querystring("title") <> "") Then
news__wen = request.querystring("title")
End If
%>
<%
Dim news__shui
news__shui = "%"
If (request.querystring("textfield") <> "") Then
news__shui = request.querystring("textfield")
End If
%>
<%
Dim news__jiguan
news__jiguan = "%"
If (request.querystring("textfield2") <> "") Then
news__jiguan = request.querystring("textfield2")
End If
%>
<%
Dim news__wenhao
news__wenhao = "%"
If (request.querystring("wenhao") <> "") Then
news__wenhao = request.querystring("wenhao")
End If
%>
<%
Dim news__zheng
news__zheng = "%"
If (request.querystring("zw") <> "") Then
news__zheng = request.querystring("zw")
End If
%>
<%
Dim news__sh
news__sh = "已审核"
If (Request("MM_Emptyvalue") <> "") Then
news__sh = Request("MM_Emptyvalue")
End If
%>
<%
Dim news
Dim news_numRows

Set news = Server.CreateObject("ADODB.Recordset")
news.ActiveConnection = MM_news_STRING
news.Source = "SELECT * FROM news WHERE (wh like '%" + Replace(news__MMColParam4, "'", "''") + "%'and title like'%" + Replace(news__wen, "'", "''") + "%'and suiz like'%" + Replace(news__shui, "'", "''") + "%'and fwjg like'%" + Replace(news__jiguan, "'", "''") + "%'and (wh = '" + Replace(news__wenhao, "'", "''") + "'or wh like '%" + Replace(news__wenhao, "'", "''") + "%')and text_zw like '%" + Replace(news__zheng, "'", "''") + "%')and shenh='" + Replace(news__sh, "'", "''") + "' ORDER BY id desc"
news.CursorType = 0
news.CursorLocation = 2
news.LockType = 1
news.Open()

news_numRows = 0
%>
<%
Dim f_name__MMColParam
f_name__MMColParam = "1"
If (Session("mm_username") <> "") Then
f_name__MMColParam = Session("mm_username")
End If
%>
<%
Dim f_name
Dim f_name_numRows

Set f_name = Server.CreateObject("ADODB.Recordset")
f_name.ActiveConnection = MM_yxh_STRING
f_name.Source = "SELECT * FROM Login WHERE qyname = '" + Replace(f_name__MMColParam, "'", "''") + "'and stopd>=#"&formatdatetime(now,2)&"#"
f_name.CursorType = 0
f_name.CursorLocation = 2
f_name.LockType = 1
f_name.Open()

f_name_numRows = 0
%>
<%
Dim Repeat1__numRows
Dim Repeat1__index

Repeat1__numRows = 60
Repeat1__index = 0
news_numRows = news_numRows + Repeat1__numRows
%>
<%
' *** Recordset Stats, Move To Record, and Go To Record: declare stats variables

Dim news_total
Dim news_first
Dim news_last

' set the record count
news_total = news.RecordCount

' set the number of rows displayed on this page
If (news_numRows < 0) Then
news_numRows = news_total
Elseif (news_numRows = 0) Then
news_numRows = 1
End If

' set the first and last displayed record
news_first = 1
news_last = news_first + news_numRows - 1

' if we have the correct record count, check the other stats
If (news_total <> -1) Then
If (news_first > news_total) Then
news_first = news_total
End If
If (news_last > news_total) Then
news_last = news_total
End If
If (news_numRows > news_total) Then
news_numRows = news_total
End If
End If
%>
<%
' *** Recordset Stats: if we don't know the record count, manually count them

If (news_total = -1) Then

' count the total records by iterating through the recordset
news_total=0
While (Not news.EOF)
news_total = news_total + 1
news.MoveNext
Wend

' reset the cursor to the beginning
If (news.CursorType > 0) Then
news.MoveFirst
Else
news.Requery
End If

' set the number of rows displayed on this page
If (news_numRows < 0 Or news_numRows > news_total) Then
news_numRows = news_total
End If

' set the first and last displayed record
news_first = 1
news_last = news_first + news_numRows - 1

If (news_first > news_total) Then
news_first = news_total
End If
If (news_last > news_total) Then
news_last = news_total
End If

End If
%>
<%
Dim MM_paramName
%>
<%
' *** Move To Record and Go To Record: declare variables

Dim MM_rs
Dim MM_rsCount
Dim MM_size
Dim MM_uniqueCol
Dim MM_offset
Dim MM_atTotal
Dim MM_paramIsDefined

Dim MM_param
Dim MM_index

Set MM_rs = news
MM_rsCount = news_total
MM_size = news_numRows
MM_uniqueCol = ""
MM_paramName = ""
MM_offset = 0
MM_atTotal = false
MM_paramIsDefined = false
If (MM_paramName <> "") Then
MM_paramIsDefined = (Request.QueryString(MM_paramName) <> "")
End If
%>
<%
' *** Move To Record: handle 'index' or 'offset' parameter

if (Not MM_paramIsDefined And MM_rsCount <> 0) then

' use index parameter if defined, otherwise use offset parameter
MM_param = Request.QueryString("index")
If (MM_param = "") Then
MM_param = Request.QueryString("offset")
End If
If (MM_param <> "") Then
MM_offset = Int(MM_param)
End If

' if we have a record count, check if we are past the end of the recordset
If (MM_rsCount <> -1) Then
If (MM_offset >= MM_rsCount Or MM_offset = -1) Then ' past end or move last
If ((MM_rsCount Mod MM_size) > 0) Then ' last page not a full repeat region
MM_offset = MM_rsCount - (MM_rsCount Mod MM_size)
Else
MM_offset = MM_rsCount - MM_size
End If
End If
End If

' move the cursor to the selected record
MM_index = 0
While ((Not MM_rs.EOF) And (MM_index < MM_offset Or MM_offset = -1))
MM_rs.MoveNext
MM_index = MM_index + 1
Wend
If (MM_rs.EOF) Then
MM_offset = MM_index ' set MM_offset to the last possible record
End If

End If
%>
<%
' *** Move To Record: if we dont know the record count, check the display range

If (MM_rsCount = -1) Then

' walk to the end of the display range for this page
MM_index = MM_offset
While (Not MM_rs.EOF And (MM_size < 0 Or MM_index < MM_offset + MM_size))
MM_rs.MoveNext
MM_index = MM_index + 1
Wend

' if we walked off the end of the recordset, set MM_rsCount and MM_size
If (MM_rs.EOF) Then
MM_rsCount = MM_index
If (MM_size < 0 Or MM_size > MM_rsCount) Then
MM_size = MM_rsCount
End If
End If

' if we walked off the end, set the offset based on page size
If (MM_rs.EOF And Not MM_paramIsDefined) Then
If (MM_offset > MM_rsCount - MM_size Or MM_offset = -1) Then
If ((MM_rsCount Mod MM_size) > 0) Then
MM_offset = MM_rsCount - (MM_rsCount Mod MM_size)
Else
MM_offset = MM_rsCount - MM_size
End If
End If
End If

' reset the cursor to the beginning
If (MM_rs.CursorType > 0) Then
MM_rs.MoveFirst
Else
MM_rs.Requery
End If

' move the cursor to the selected record
MM_index = 0
While (Not MM_rs.EOF And MM_index < MM_offset)
MM_rs.MoveNext
MM_index = MM_index + 1
Wend
End If
%>
<%
' *** Move To Record: update recordset stats

' set the first and last displayed record
news_first = MM_offset + 1
news_last = MM_offset + MM_size

If (MM_rsCount <> -1) Then
If (news_first > MM_rsCount) Then
news_first = MM_rsCount
End If
If (news_last > MM_rsCount) Then
news_last = MM_rsCount
End If
End If

' set the boolean used by hide region to check if we are on the last record
MM_atTotal = (MM_rsCount <> -1 And MM_offset + MM_size >= MM_rsCount)
%>
<%
' *** Go To Record and Move To Record: create strings for maintaining URL and Form parameters

Dim MM_keepNone
Dim MM_keepURL
Dim MM_keepForm
Dim MM_keepBoth

Dim MM_removeList
Dim MM_item
Dim MM_nextItem

' create the list of parameters which should not be maintained
MM_removeList = "&index="
If (MM_paramName <> "") Then
MM_removeList = MM_removeList & "&" & MM_paramName & "="
End If

MM_keepURL=""
MM_keepForm=""
MM_keepBoth=""
MM_keepNone=""

' add the URL parameters to the MM_keepURL string
For Each MM_item In Request.QueryString
MM_nextItem = "&" & MM_item & "="
If (InStr(1,MM_removeList,MM_nextItem,1) = 0) Then
MM_keepURL = MM_keepURL & MM_nextItem & Server.URLencode(Request.QueryString(MM_item))
End If
Next

' add the Form variables to the MM_keepForm string
For Each MM_item In Request.Form
MM_nextItem = "&" & MM_item & "="
If (InStr(1,MM_removeList,MM_nextItem,1) = 0) Then
MM_keepForm = MM_keepForm & MM_nextItem & Server.URLencode(Request.Form(MM_item))
End If
Next

' create the Form + URL string and remove the intial '&' from each of the strings
MM_keepBoth = MM_keepURL & MM_keepForm
If (MM_keepBoth <> "") Then
MM_keepBoth = Right(MM_keepBoth, Len(MM_keepBoth) - 1)
End If
If (MM_keepURL <> "") Then
MM_keepURL = Right(MM_keepURL, Len(MM_keepURL) - 1)
End If
If (MM_keepForm <> "") Then
MM_keepForm = Right(MM_keepForm, Len(MM_keepForm) - 1)
End If

' a utility function used for adding additional parameters to these strings
Function MM_joinChar(firstItem)
If (firstItem <> "") Then
MM_joinChar = "&"
Else
MM_joinChar = ""
End If
End Function
%>
<%
' *** Move To Record: set the strings for the first, last, next, and previous links

Dim MM_keepMove
Dim MM_moveParam
Dim MM_moveFirst
Dim MM_moveLast
Dim MM_moveNext
Dim MM_movePrev

Dim MM_urlStr
Dim MM_paramList
Dim MM_paramIndex
Dim MM_nextParam

MM_keepMove = MM_keepBoth
MM_moveParam = "index"

' if the page has a repeated region, remove 'offset' from the maintained parameters
If (MM_size > 1) Then
MM_moveParam = "offset"
If (MM_keepMove <> "") Then
MM_paramList = Split(MM_keepMove, "&")
MM_keepMove = ""
For MM_paramIndex = 0 To UBound(MM_paramList)
MM_nextParam = Left(MM_paramList(MM_paramIndex), InStr(MM_paramList(MM_paramIndex),"=") - 1)
If (StrComp(MM_nextParam,MM_moveParam,1) <> 0) Then
MM_keepMove = MM_keepMove & "&" & MM_paramList(MM_paramIndex)
End If
Next
If (MM_keepMove <> "") Then
MM_keepMove = Right(MM_keepMove, Len(MM_keepMove) - 1)
End If
End If
End If

' set the strings for the move to links
If (MM_keepMove <> "") Then
MM_keepMove = MM_keepMove & "&"
End If

MM_urlStr = Request.ServerVariables("URL") & "?" & MM_keepMove & MM_moveParam & "="

MM_moveFirst = MM_urlStr & "0"
MM_moveLast = MM_urlStr & "-1"
MM_moveNext = MM_urlStr & CStr(MM_offset + MM_size)
If (MM_offset - MM_size < 0) Then
MM_movePrev = MM_urlStr & "0"
Else
MM_movePrev = MM_urlStr & CStr(MM_offset - MM_size)
End If
%>