Fel på denna kod?

ASP

10 svar · 242 visningar · startad av edebro

Medlem sedan aug. 2001261 inlägg
Trådstart#1

Okej, jag håller på med en sökfunktion där man ska kunna filtrera sökningen ganska rejält, men det fungerar inte som jag vill, här är koden:

If Request.Querystring("connectionEquals") = "At least" Then
Select Case Request.Querystring("connection")
Case "T-3"
Userinfo = Userinfo & " AND Line = 'T-3'"
Case "T-1"
Userinfo = Userinfo & " AND Line = 'T-3' OR Line = 'T-1'"
End Select
End If

det fungerar altså så att jag har 2 dropdown menyer. Med valen "At least", "Equal to" och "At best"
Sen om man väljer t ex "At least" i första menyn, sen kan man välja en uppkoppling t ex "DSL" och då får man fram alla som har DSL och snabbare(typ T-3 mm)
Det är denna rad som inte riktigt vill fungera, det måste väl vara nåt fel med SQL satsen
Case "T-1"
Userinfo = Userinfo & " AND Line = 'T-3' OR Line = 'T-1'"

tacksam för snabbt svar

Medlem sedan juni 200032 967 inlägg
#2

Och SQL-satsen utskriven ser ut hur?

Medlem sedan aug. 2001261 inlägg
#3

ja just ja =)

så här ser den ursprungliga SQL satsen ut:
Userinfo = "SELECT * FROM users WHERE ID = " & RecSet("Number")

och sen fortsätter jag bygga på den iom att villkoren för sökningen uppfylls.
Med If satser som ovan.
Men det lite bökiga är att jag söker igenom 2 databaser(tabeller) för att alla funktioner ska uppfyllas

ni får gärna ta er en titt på sidan: http://213.67.56.142/search.asp

den är uppe hela dagen skulle jag tro

Medlem sedan aug. 2001261 inlägg
#4

om ni kollar på sidan så kan jag berätta att Connection och Country ligger i en annan databas(tabell)

Medlem sedan juni 200032 967 inlägg
#5

och sen fortsätter jag bygga på den iom att villkoren för sökningen uppfylls.

Hur ser den ut när den är klar då? Använd Response.write för att kasta ut den till webbläsaren innan execute.

Mvh,

Medlem sedan aug. 2001261 inlägg
#6

det är ju en bra ide....ska prova det
men annars så tycker du att SQL satsen ser okej eller?

Medlem sedan aug. 2001261 inlägg
#7

så här såg den ut när jag skrev ut den:
SELECT * FROM users WHERE ID = 352 AND Line = 'T-3' OR Line = 'T-1'

det tycker jag ser ganska okej ut...eller?

Medlem sedan juni 200032 967 inlägg
#8

Vad är problemet?

Jag tycker att det saknas en parentes, men annars ser frågan rätt ut.

SELECT * FROM users WHERE ID = 352 AND (Line = 'T-3' OR Line = 'T-1')

Mvh,

Medlem sedan aug. 2001261 inlägg
#9

problemet är det att den bara listar folk med "T-1" även om man har valt att den ska lista dom med MINST T-1....dvs att den då också ska lista dom med T-3 för att det är snabbare

men jag visste inte att det skulle se ut så där....det ska altså vara paranteser....det har jag aldrig haft förut?

Medlem sedan aug. 2001261 inlägg
#10

men helvete vad bra @nders......du löste mitt dilemma.
Tusen tack :)

problemet var altså att jag inte hade några paranteser....men det måste ju vara så att när man har flera alternativ bhövs det, för jag har aldrig kört med paranteser förr??

Medlem sedan dec. 19998 577 inlägg
#11

Satser inom paranteser behandlas för sig, annars skulle man inte kunna ställa sådanna frågor.

Where-satser (precis som if) arbetar med true och false. Så om ID är 352, Line är T-1 men inte T-3 så kommer det att se ut såhär för SQL:
True AND (False OR True)

Eftersom du kapslat in false och true med ett OR mellan, så kommer den inkappslingen att bli true.

"True AND True" blir i sin tur blir True, och hela Where-satsen blev sann.

Det hela handlar om logisk mattematik.

Kanske lite klumpigt beskrivet, men så är det... ;)

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