webForumDet fria alternativet

FEL i sökscript (Taget av Emission)

ASP

4 svar · 363 visningar · startad av Lazerzubb

Medlem sedan mars 2000542 inlägg
Frågan#1

Jag får felmeddelande
Error Type:
Microsoft VBScript compilation (0x800A0401)
Expected end of statement
/test/sscript.asp, line 78, column 26
set rs=Connection.execute mQuery
i denna KOD:
<!-- #include virtual="/land/adovbs.stm" -->

<%
Response.Cachecontrol="Public"
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("search.mdb")
dim i,j,mQuery,mQueryArr,mAndArr,mNotArr,mOrArr,mSQL,mWhere
'grunddelarna i frågan
mSQL="SELECT * FROM search1 WHERE "
mWhere="country LIKE '%%'"
'sökfältets värde
mQuery=request.form("search2")
'loopa igenom allt och ersätt mellanslag inom citattecken med chr(1).
'Denna bit går att göra med reguljära uttryck också
for i=1 to len(mQuery)
mAsc=asc(mid(mQuery,i,1))
if mAsc=34 then
mCount=mCount+1
blnInQ=not blnInQ
else
if blnInQ and mAsc=32 then
mQuery=left(mQuery,i-1) & chr(1) & mid(mQuery,i+1)
end if
end if

next

'om antalet citattecken är ojämnt ignoreras de helt
if mCount mod 2 <> 0 then
mQuery=replace(mQuery,chr(1)," ")
end if

'ta bort citattecknen
mQuery=replace(mQuery,chr(34),"")

'ersätt mellanslag med chr(0) och mellanslag
mQuery=chr(0) & replace(mQuery," "," " & chr(0))

'splitta upp i en array
mQueryArr=split(mQuery," ")

'skapa arrayer för AND, AND NOT och OR.
'chr(0) gör det nu möjligt att matcha endast början på strängarna
mAndArr=filter(mQueryArr,chr(0) & "+",true)
mQueryArr=filter(mQueryArr,chr(0) & "+",false)
mNotArr=filter(mQueryArr,chr(0) & "-",true)
mQueryArr=filter(mQueryArr,chr(0) & "-",false)

'återskapa strängarna (ersätt chr(1) med mellanslag) och
'skapa WHERE-satser i arrayerna
for i=0 to ubound(mAndArr)
mAndArr(i)=replace(mAndArr(i),chr(1)," ")
mAndArr(i)=replace(mWhere,"%%","%" & mid(mAndArr(i),3) & "%")
next
for i=0 to ubound(mNotArr)
mNotArr(i)=replace(mNotArr(i),chr(1)," ")
mNotArr(i)=replace(mWhere,"%%","%" & mid(mNotArr(i),3) & "%")
next
for i=0 to ubound(mQueryArr)
mQueryArr(i)=replace(mQueryArr(i),chr(1)," ")
mQueryArr(i)=replace(mWhere,"%%","%" & mid(mQueryArr(i),2) & "%")
next

'tejpa ihop en färdig fråga
mQuery=join(mQueryArr," OR ")
if mQuery<>"" then
mQuery="(" & mQuery & ")"
if ubound(mAndArr) > -1 then mQuery=mQuery & " AND "
end if
mQuery=mQuery & join(mAndArr," AND ")
if mQuery<>"" and ubound(mNotArr) > -1 then mQuery=mQuery & " AND NOT "
mQuery=mSQL & mQuery & join(mNotArr," AND NOT ")

set rs=Connection.execute mQuery

%>

<html>
<head>
</head>
<%
If rs.EOF Then
Response.write("Vi sökte, men hittade inte vad du ville ha.")
Else
%>

<%
Do until rs.EOF
%>

<a href="visar.asp?id=<%=rs("Id")%>"><%= rs("country") %></a>
<br>

<%
rs.MoveNext
Loop
End If
rs.close
set rs=nothing
Connection.close
set Connection=nothing
%>
//

------------------
Lazerzubb

Medlem sedan dec. 2000596 inlägg
#2

Oj, missförstod det hela... :)
------------------
Olle: Pappa, jag har fått en sticka i fingret...
Pappa: Nämen Olle, hur många gånger har jag sagt åt dig att du inte får klia dig i huvudet.

[Redigerat av ERR0R den 15 apr 2001]

Medlem sedan dec. 200012 464 inlägg
#3
set rs=Connection.execute (mQuery)

------------------
essentitia preter non sans multiplicandum

Medlem sedan mars 2000542 inlägg
#4

Funkar nu OM man vill ha flera värden skriver man bara
mWhere="country LIKE '%%' OR province LIKE '%%'"
VA?

------------------
Lazerzubb

Medlem sedan dec. 200012 464 inlägg
#5

Tja,

mWhere="(country LIKE '%%') OR (province LIKE '%%')"

------------------
essentitia preter non sans multiplicandum

262 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)