Problem med SQL igen...
Jag har ett fält av datatyp text.
Jag får inte denna sträng att funka. Ska man använda LIKE eller =?
Help please!
SQL = "SELECT * from medarbetare where foretag LIKE '" & "%" & link & "%" & "'"
15 svar · 325 visningar · startad av soffan76
Problem med SQL igen...
Jag har ett fält av datatyp text.
Jag får inte denna sträng att funka. Ska man använda LIKE eller =?
Help please!
SQL = "SELECT * from medarbetare where foretag LIKE '" & "%" & link & "%" & "'"
vad är det du skall söka på???
är det fritextsökning???
I sådana fall skall det stå:
SQL = "SELECT * from medarbetare where foretag LIKE '%"& link &"%'"
Tja, det beror ju på? Likhetstecken om det är en exakt jämförelse du vill göra...
Du krånglar lite väl mycket med strängkonkateneringar.
SQL = "SELECT * from medarbetare where foretag LIKE '%" & link & "%'"
Grundregel 1: Skriv ut den färdiga SQL-frågan med response.write, istället för att exekvera den. Då ser du om värden saknas eller ligger fel.
När jag skriver Response.write.SQL blir det:
SELECT * from medarbetare where foretag LIKE '%%'
Det jag vill göra är att hämta upp ett värde från en selectbox.
Sedan hämtas denna i:
<% link = request.form("list") %>
Kontrollera att listboxen heter "list" samt att du har specificerat metoden "post" i din <form>-tagg.
Är det inte en exakt jämförelse du ska ha? Använd bara LIKE när du ska göra sökningar.
Mvh,
Min form ser ut så här:
<form action="visa_adresslista.asp">
<select name="list">
<option value="CD">CD
<option value="CDC">CDC
<option selected value="EG">EG
<option selected value="CDL">CDL
<option value="CDN">CDN
</select>
<input type=submit value="Visa adresslista!">
</form>
Du har inte angett metoden "post", då antas "get" per default, och allt skickas som querystrings.
Mvh,
Åh, vilket fånigt fel!
Tack ska ni ha!
Problem igen...
Det funkar på alla utom när jag väljer den första "CD".
Då hämtas alla poster som börjar på CD alltså CD,CDC,CDE,CDN...
Hur gör jag för att fixa detta?
Jag såg i ditt formulär ovan att du hade "selected" på två av valen i din select-box. Åtgärda det först, så att du garanterar en unik postning ur det elementet.
soffan76 skrev:
Problem igen...
Det funkar på alla utom när jag väljer den första "CD".
Då hämtas alla poster som börjar på CD alltså CD,CDC,CDE,CDN...
Hur gör jag för att fixa detta?
Givetvis. :) Det är ju så det står i koden.
% betyder ju typ "vad som helst här". Och eftersom strängen blir %CD%, kommer den ta alla rader där CD finns med antingen som en del av ett ord eller själstående.
Vill du ha att det bara skall börja på din träff, ta bort det sista %:
SQL = "SELECT * from medarbetare where foretag LIKE '%" & link & "'"
Frågan är ifall en select-box och wildcards (%) verkligen passar ihop. Brukar det inte vara så att det man väljer i selecten, alltid har en unik likhet och enbart ger en träff på nästa sida?
Typ:
SQL = "SELECT * from medarbetare where foretag = '" & link & "'"
soffan76 skrev:
Problem igen...
Det funkar på alla utom när jag väljer den första "CD".
Då hämtas alla poster som börjar på CD alltså CD,CDC,CDE,CDN...
Hur gör jag för att fixa detta?
Du gör en exakt jämförelse med = istället... :o
SQL = "SELECT * from medarbetare where foretag = '" & link & "'"
soffan76 skrev:
Problem igen...
Det funkar på alla utom när jag väljer den första "CD".
Då hämtas alla poster som börjar på CD alltså CD,CDC,CDE,CDN...
Hur gör jag för att fixa detta?
Det händer därför att teckenkombinationen '%CD%' inkluderar alla dessa poster. Ställ en annan SQL-fråga där du inte löper den risken. Du kanske inte behöver ha dina %-tecken i strängjämförelsen?
Superklasse! :e
Tack! Ni är bäst!