---
title: "Problem med avancerad sökmaskin"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/39736-problem-med-avancerad-sökmaskin"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "AG"
published: "2002-03-15T14:39:12.000Z"
updated: "2002-03-15T14:39:12.000Z"
replies: 0
views: 205
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/39736-problem-med-avancerad-sökmaskin"
---

# Problem med avancerad sökmaskin

## #1 — AG, 2002-03-15T14:39Z

En gång i tiden hjälpte emission mig med en avancerad sökmaskin, den hanterar "+" "-" "\*" """" etc.
NU är saken den att jag försökte expandera den, den skulle söka av flera tabeller.

<http://webforum.aleborg.com/forum/showthread.php?s=&threadid=38903>

Jag tror Vide lyckades lösa detta problem i sitt sökscript:
<http://webforum.aleborg.com/forum/showthread.php?>
s=&threadid=12058&highlight=s%F6kmotor

Vänligen försök få detta att fungera i min följande kod:

> mSQL="SELECT \* FROM Titlar WHERE "
> 
> if CInt(request.QueryString("table")) = "1" then
> mWhere="titel LIKE '%%' or forfattare LIKE '%%' or beskrivning LIKE '%%' or isbn LIKE '%%'"
> end if
> 
> if CInt(request.QueryString("table")) = "2" then
> mWhere="forfattare LIKE '%%'"
> end if
> 
> if CInt(request.QueryString("table")) = "3" then
> mWhere="isbn LIKE '%%'"
> end if
> 
> if request.QueryString("search")\<\>"" then
> mQuery=request.QueryString("search")
> else
> mQuery=request.QueryString("search")
> end if
> mOrigQuery=mQuery
> 
> Set rs = Server.CreateObject("ADODB.Recordset")
> 
> mSQL=MakeQuery(mQuery,mSQL,mWhere)
> 
> function MakeQuery(strSearch,strQuery,strWhere)
> dim i,j,mQueryArr,mAndArr,mNotArr,mOrArr
> 	
> for i=1 to len(strSearch)
> mAsc=asc(mid(strSearch,i,1))
> if mAsc=34 then
> mCount=mCount+1
> blnInQ=not blnInQ
> else
> if blnInQ and mAsc=32 then
> strSearch=left(strSearch,i-1) & chr(1) & mid(strSearch,i+1)
> end if
> end if
> next
> if mCount mod 2 \<\> 0 then
> strSearch=replace(strSearch,chr(1)," ")
> end if
> strSearch=replace(strSearch,chr(34),"")
> strSearch=chr(0) & replace(strSearch," "," " & chr(0))
> 
> strSearchArr=split(strSearch," ")
> 
> mAndArr=filter(strSearchArr,chr(0) & "+",true)
> strSearchArr=filter(strSearchArr,chr(0) & "+",false)
> mNotArr=filter(strSearchArr,chr(0) & "-",true)
> strSearchArr=filter(strSearchArr,chr(0) & "-",false)
> 
> for i=0 to ubound(mAndArr)
> mAndArr(i)=replace(mAndArr(i),chr(1)," ")
> mAndArr(i)=replace(strWhere,"%%","%" & replace(mid(mAndArr(i),3),"\*","%") & "%")
> next
> for i=0 to ubound(mNotArr)
> mNotArr(i)=replace(mNotArr(i),chr(1)," ")
> mNotArr(i)=replace(strWhere,"%%","%" & replace(mid(mNotArr(i),3),"\*","%") & "%")
> next
> for i=0 to ubound(strSearchArr)
> strSearchArr(i)=replace(strSearchArr(i),chr(1)," ")
> strSearchArr(i)=replace(strWhere,"%%","%" & replace(mid(strSearchArr(i),2),"\*","%") & "%")
> next
> 
> strSearch=join(strSearchArr," OR ")
> if strSearch\<\>"" then
> strSearch="(" & strSearch & ")"
> if ubound(mAndArr) \> -1 then strSearch=strSearch & " AND "
> end if
> strSearch=strSearch & join(mAndArr," AND ")
> if strSearch\<\>"" and ubound(mNotArr) \> -1 then strSearch=strSearch & " AND NOT "
> strSearch=strQuery & strSearch & join(mNotArr," AND NOT ")
> 
> MakeQuery=strSearch
> end function

Vänligen kan någon hjälpa så att den söker igenom samtliga kolumner.

Andreas

Permalänk: https://www.webforum.nu/p/39736

---

Tråden på webben: https://www.webforum.nu/amne/asp/39736-problem-med-avancerad-sökmaskin
