22. marts 2006 - 14:13Der er
17 kommentarer og 1 løsning
Søgefunktion - Søg på 2 navne
Hej med jer,
Jeg har en søgefunktion, der søger på fornavn og efternavn (2 seperate felter i tabellen). - Min SQL-streng virker 50%
Hvis man kun søger på enten fornavn eller efternavn findes personen, men hvis man søger på personens fulde navn (Fornavn Efternavn) er resultatlisten tom.
Hvordan kan jeg tilpasse min kode, så der kan søges på enten Fornavn, Efternavn eller begge dele?
Her er min nuværende SQL-streng: select * from tbl_user_data where userFName like '%" & varSearchCriteria & "%' or userLName like '%" & varSearchCriteria & "%' order by userLName,userFName asc
select * from tbl_user_data where userFName like '%" & varSearchCriteria & "%' or userLName like '%" & varSearchCriteria & "%' or userFName+' '+userFName like '%" & varSearchCriteria & "%' order by userLName,userFName asc
Hvis jeg udskriver SQL'en får jeg dette resultat: select * from tbl_user_data where userFName+' '+userLName like '%Henrik Bonde%' order by userLName,userFName asc
Du må nok over i noget ala FFSoft's løsning, hvor du deler din varSearchCriteria op i 2 ved " " (space) tegnet.
tmp = split(varSearchCriteria, " ") if ubound(tmp) >= 1 then strFornavn = tmp(0) strEfternavn = tmp(1) end if
Men der løber du ind i en masse problemer med navne som "Hans Jørgen Petersen" (fornavn er 2 navne) eller "Hans Petersen Knudsen" (efternavn er 2 navne)
Da FFSoft's løsning ikke kan bruges, og min ikke dur (hvad jeg stadig ikke kan forstå), har jeg kun et ekstra bud.
Men først ville jeg afprøve min løsning en sidste gang, også få tjekket databasen og indtastningen for ekstra mellemrum. Den dur nemlig ikke hvis userFName værdierne er f.eks "fennec " (ekstra mellemrum), eller varSearchCriteria er "fennec Ebruger " (også ekstra mellemrum). Afprøv det evt direkte i "Enterprise Manager" så du er uden om ASP...
Den sidste ide jeg har er en funktion, som kan bygge søgekriterierne op i alle LIKE afskygningerne:
"Hans" skal blive til: "(userFName like '%Hans%' or userLName like '%Hans%')"
"Hans Jørgen" skal blive til: "(userFName like '%Hans%' or userLName like '%Hans%') and (userFName like '%Jørgen%' or userLName like '%Jørgen%')"
"Hans Jørgen Petersen" skal blive til: "(userFName like '%Hans%' or userLName like '%Hans%') and (userFName like '%Jørgen%' or userLName like '%Jørgen%') and (userFName like '%Petersen%' or userLName like '%Petersen%')"
Hvert ord i søgestrengen skal altså blive til (!!husk parenteser!!): "(userFName like '%SøgeOrd%' or userLName like '%SøgeOrd%')"
Men det giver en mass like søgninger, som tager tid, men det må du så finde dig i...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.