dim SQL,sok
sok = replace("" & request("sokord"), "'", "''")
SQL = "SELECT * FROM Coacher WHERE [name] LIKE %'" & sok & "' OR [Adress] LIKE %'" & sok & "' OR Ort LIKE %'" & sok & "';"
???
redigerat efter @nders :P
13 svar · 705 visningar · startad av bluespot
Jag har en access-databas med en tabell som heter (Coacher), i den tabellen finns flera kolumner, hur får jag sökningen att ske från ett sökfält (Fritext)?
Kolumnerna som jag vill söka i heter:
Namn
Adress
Ort
Jag har provat med Like utan något bra resultat.
dim SQL,sok
sok = replace("" & request("sokord"), "'", "''")
SQL = "SELECT * FROM Coacher WHERE [name] LIKE %'" & sok & "' OR [Adress] LIKE %'" & sok & "' OR Ort LIKE %'" & sok & "';"
???
redigerat efter @nders :P
Oj, här klantar vi oss både till höger och vänster, voigtann! :)
dim SQL,sok
sok = replace(request("sokord"), "'", "''")
SQL = "SELECT * FROM Coacher WHERE [name] LIKE '%" & sok & "%' OR [Adress] LIKE '%" & sok & "%' OR Ort LIKE '%" & sok & "%'"
jag ska nog sluta att skriva inlägg helt enkelt ;)
Tack så mycket för hjälpen, funkade perfekt.
Efter ha tänkt lite längre så skulle jag också vilja tillsammans med frisökningsrutan även ha en lista som genereras ur databasen, problemet är att om det finns fler poster som heter samma sak så kommer dom ju självklart upp i listan, kan man utesluta att visa dubletter?
Ja, använd SELECT DISTINCT när du hämtar datat så blir du av med dubletter.
Nu ser koden ut såhär:
dim SQL,sok
sok = replace(request("sokord"), "'", "''")
SQL = "SELECT * FROM Coacher WHERE [Namn] LIKE '%" & sok & "%' OR [Adress] LIKE '%" & sok & "%' OR Ort LIKE '%" & sok & "%'"
Men nu vill jag att från söksidan där en lista finns med Ort ska kunnas sökas på också. Alltså ska man kunna söka Ort ur en lista eller/och tillsammans med fritextsökningen.
@nders skrev:
Ja, använd SELECT DISTINCT när du hämtar datat så blir du av med dubletter.
SELECT DISTINCT Namn, Adress, Ort FROM Coacher
visar ändå dubletter.
Distinct använder sig av hela select-listan. Så i detta faller beror det på vad du menar med dubletter. Du kan ju få två namn med Knut om de har olika orter exempelvis. Då är raderna inte lika.
Nu går Namn, Adress, Ort in i varsin lista som jag vill använda i ett sökformulär, kan man inte få bort dubletterna i varje lista då?
Om du ska ha de i tre olika listor i sökformuläret; ställ tre SQL-frågor med DISTINCT eller sortera bort dubletterna i ASP-koden.
Tack, nu förstår jag hur det hänger ihop.
Nu har jag bara ett problem kvar. Det är sidan som tar emot sökformuläret.
dim SQL,mottagning,utbildning,omrade
namn = replace(request("fm_namn"), "'", "''")
adress = replace(request("fm_adress"), "'", "''")
ort = replace(request("fm_ort"), "'", "''")
SQL = "SELECT * FROM Coacher WHERE Namn LIKE '" & namn & "' AND Adress LIKE '" & adress & "' AND Ort LIKE '" & ort & "'"
Som det fungerar nu måste man välja exakt rätt i alla tre listorna på söksidan för att ett sökresultat ska visas, men min tanke var att man också bara ska kunna välja t ex ett namn ur Namn-listan så ska alla "Kalle" visas.
namn = replace(request("fm_namn"), "'", "''")
adress = replace(request("fm_adress"), "'", "''")
ort = replace(request("fm_ort"), "'", "''")
c=0
SQL = "SELECT * FROM Coacher "
if namn <> "" then
if c = 0 then SQL = SQL & "WHERE " else SQL = SQL & "AND "
SQL = SQL & "Namn = '" & namn & "' "
c = 1
end if
if adress <> "" then
if c = 0 then SQL = SQL & "WHERE " else SQL = SQL & "AND "
SQL = SQL & "Adress = '" & adress & "' "
c = 1
end if
if ort <> "" then
if c = 0 then SQL = SQL & "WHERE " else SQL = SQL & "AND "
SQL = SQL & "Ort = '" & ort & "' "
c = 1
end if
c är en kontrollvariabel för att hålla koll på om vi ska ha and eller where.
Dylik kod går att skriva på massor av olika sätt, jag tog ett enkelt. :)