webForumDet fria alternativet

problem med sökfunktion

6 svar · 534 visningar · startad av Vinnaren

VinnarenMedlem sedan sep. 2005833 inlägg
#1

Hej

Jag har fått något konstigt problem med min sökfunktion.

Har följande kod:

fritext		= SafeSQL(Request.QueryString("fritext"))
klubbID		= CLng(Request.QueryString("klubbID"))
plats		= CLng(Request.QueryString("position"))
landID		= CLng(Request.QueryString("landID"))

IF request.QueryString("aktiva") = 0 then
     aktiva = 0
ELSE
     aktiva = 1 
END IF

strSQL ="SELECT spelare.playID, spelare.lagID, spelare.landID AS spelare_landID, spelare.playFnamn+' '+spelare.playEnamn AS Namn, 
spelare.playFnamn, spelare.playEnamn, spelare.playFodd, spelare.playFodelseort, spelare.playPosition, spelare.playSkott, spelare.playAktiv, 
land.landID AS land_landID, land.land, land.flagga, klubbar.lagNamn FROM (land INNER JOIN spelare ON land.landID=spelare.landID) LEFT JOIN klubbar ON spelare.lagID=klubbar.lagID 
WHERE "&fritext&" "&klubbID&" "&plats&" "&landID&" AND playAktiv ="&aktiva&" ORDER BY "&order_spelare&""

Problemet är när man skriver in en söktext får man inte upp några träffar även att det finns.
Har provat att skriva ut sql frågan och provkört den i databasen(Access) och får där massa poster, men kommer inte fram några på sidan.
Får fram massa poster på sidan när man inte fyller i något sökord utan väljer något klubbID.

Har även provat med:

Set objRS = objConn.Execute("SELECT spelare.playID, spelare.lagID, spelare.landID AS spelare_landID, spelare.playFnamn, spelare.playEnamn, 
spelare.playFodd, spelare.playFodelseort, spelare.playPosition, spelare.playSkott, spelare.playAktiv,
 land.landID AS land_landID, land.land, land.flagga, klubbar.lagNamn FROM (land INNER JOIN spelare ON land.landID=spelare.landID) LEFT JOIN klubbar ON spelare.lagID=klubbar.lagID 
WHERE (spelare.playFnamn+' '+spelare.playEnamn Like '*a*')")

Response.Write objRS("playFnamn")

Får här felmeddelandet:
Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.

Kör man samma fråga i databasen får jag över 500 träffar.

vad har jag gjort för fel?

Tacksam för all hjälp :stud

voigtann1Medlem sedan juni 20019 519 inlägg
#2

Din Where sats i den övre se knäpp ut...
kan bara tänka mig i slutet:
"Where 'hej' 1 2 3" du måste ju matchar de men något i databasen?

VinnarenMedlem sedan sep. 2005833 inlägg
#3

oj, glömde den koddelen :r


fritext		= SafeSQL(Request.QueryString("fritext"))
klubbID		= CLng(Request.QueryString("klubbID"))
plats		= CLng(Request.QueryString("position"))
landID		= CLng(Request.QueryString("landID"))

			
IF request.QueryString("aktiva") = 0 then
	aktiva = 0
ELSE
	aktiva = 1 
END IF

if NOT fritext = "" then
	if (klubbID = 0 AND plats = 0 AND landID=0) then
		sokFritext	= "(([spelare].[playFnamn]+' '+[spelare].[playEnamn]) Like '*"&fritext&"*') "				
	else
		sokFritext	= "spelare.playFnamn +' ' + spelare.playEnamn like '*"&fritext&"*' AND "				
	end if
end if
				
				
if NOT klubbID = 0 then
	if (plats = 0 AND landID=0) then
		sokKlubbID	= "spelare.lagID="&klubbID				
	else
		sokKlubbID	= "spelare.lagID="&klubbID&" AND "				
	end if		
end if
				
				
if NOT plats = 0 then
	if (landID=0) then
		sokPlats	= "playPosition="&plats				
	else
		sokPlats	= "playPosition="& plats&" AND "
					
	end if		
end if
			
			
if NOT landID = 0 then
	sokLandID	= "spelare.landID="&landID
end if

strSQL ="SELECT spelare.playID, spelare.lagID, spelare.landID AS spelare_landID, spelare.playFnamn+' '+spelare.playEnamn AS Namn, spelare.playFnamn, spelare.playEnamn, spelare.playFodd, spelare.playFodelseort, spelare.playPosition, spelare.playSkott, 
spelare.playAktiv, land.landID AS land_landID, land.land, land.flagga, klubbar.lagNamn FROM (land INNER JOIN spelare ON land.landID=spelare.landID) LEFT JOIN klubbar ON spelare.lagID=klubbar.lagID 
WHERE "&sokFritext&" "&sokKlubbID&" "&sokPlats&" "&sokLandID&" AND playAktiv ="&aktiva&" ORDER BY "&order_spelare&""

kanske inte det bästa sättet

doggelitoMedlem sedan juni 20003 076 inlägg
#4

Vinnaren skrev:

Kör man samma fråga i databasen får jag över 500 träffar.

Omöjligt! ;)
Kör en response.write igen på selectsatsen då strängen genererar fel svar och testa igen i databasen.
Det måste vara ett variabelfel nånstans. :)

@ndersMedlem sedan juni 200032 969 inlägg
#5

doggelito skrev:

Omöjligt! ;)

Nä, det är inte omöjligt. :)

Byt ut * mot % som wildcard i din SQL-fråga så bör resultatet bli detsamma.

Jag tror att odbc/oledb vill att man använder % som wildcard, men access-applikationen gillar *.

CatZMedlem sedan jan. 20022 440 inlägg
#6

@nders skrev:

Nä, det är inte omöjligt. :)

Byt ut * mot % som wildcard i din SQL-fråga så bör resultatet bli detsamma.

Jag tror att odbc/oledb vill att man använder % som wildcard, men access-applikationen gillar *.

Precis så är det :)

VinnarenMedlem sedan sep. 2005833 inlägg
#7

tack, nu funkar det :bire

135 ms totalt · 3 externa anrop · v20260731065814-full.beb2e261
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)