webForumDet fria alternativet

Sökning på för och efternamn?

ASP

6 svar · 235 visningar · startad av JPS

Medlem sedan nov. 2001101 inlägg
Frågan#1

Jag har en tabell med personuppgifter där förnamn och efternamn finns lagrat i var ett fält.

Fornamn Efternamn
Anders Andersson
Bosse Bossesson

Jag har ett formulär för sök person och hur gör man för
att täcka in sökning på alla alternativ

Alt. 1 - Anders
Alt. 2 - Anders Andersson
Alt. 3 - Andersson

Hittade kod för splitt m.m. men jag får inte ihop någon SQL-sats för sökning på Anders Andersson

Medlem sedan feb. 200112 078 inlägg
#2
strSearch = "anders andersson"
minArray = split(strSearch," ")

SQL = "SELECT * FROM tblUsers WHERE user IN ("

for i = lbound(minarray) to ubound(minarray)
   SQL = SQL & minArray(i)
   if cint(i) <> cint(ubound(minarray)) then
      SQL = SQL & ", "
   end if
next
   SQL = SQL & ")"

Heeelt otestat. ;)

Medlem sedan nov. 2001101 inlägg
#3

Det fungerar inte - följande felkod:


Kompileringsfel i Microsoft VBScript (0x800A0401)
Slut på programsats förväntas.
/snippets/sok.asp, line 30, column 48
SQL = "SELECT * FROM Personuppg WHERE user IN ("for i = lbound(minarray) to ubound(minarray) SQL = SQL & minArray(i) if cint(i) <> cint(ubound(minarray)) then
-----------------------------------------------^

Jag har datan i två olika fält och jag förstår inte hur jag skall ange fält namnen enligt ditt exempel.

SQL = "SELECT * FROM Personuppg where Efternamn LIKE '%" & Request.Form("Sok") & "%' OR Fornamn LIKE '%" & Request.Form("Sok") & "%' "
Medlem sedan feb. 200112 078 inlägg
#4

JPS skrev:

Det fungerar inte - följande felkod:


Kompileringsfel i Microsoft VBScript (0x800A0401)
Slut på programsats förväntas.
/snippets/sok.asp, line 30, column 48
SQL = "SELECT * FROM Personuppg WHERE user IN ("for i = lbound(minarray) to ubound(minarray) SQL = SQL & minArray(i) if cint(i) <> cint(ubound(minarray)) then
-----------------------------------------------^

Jag har datan i två olika fält och jag förstår inte hur jag skall ange fält namnen enligt ditt exempel.

SQL = "SELECT * FROM Personuppg where Efternamn LIKE '%" & Request.Form("Sok") & "%' OR Fornamn LIKE '%" & Request.Form("Sok") & "%' "

Det är klart att det inte fungerar, koden skall vara som den är skriven. Meningen med den är att generera fram variabeln SQL och sedan exekvera den. Du har ju klämt ihop allt på samma rad. :D

Medlem sedan feb. 200112 078 inlägg
#5
strSearch = "anders andersson"
' // dela söksträngen med split(), använd mellanslag som separerare
minArray = split(strSearch," ")

' // här skapar vi den första delen av SQL-strängen
SQL = "SELECT * FROM tblUsers WHERE user IN ("

' // här loopar vi igenom arrayen (som vi skapade på första raden)
' // och genererar klart SQL-strängen med värdena i
for i = lbound(minarray) to ubound(minarray)
   SQL = SQL & minArray(i)
   if cint(i) <> cint(ubound(minarray)) then
      SQL = SQL & ", "
   end if
next
   ' // lägg till en sista sak, efter loopen
   SQL = SQL & ")"

' // och här KÖR vi SQL-strängen
set objRs = objConn.execute(SQL)

:)

Medlem sedan dec. 19996 522 inlägg
Medlem sedan nov. 2001101 inlägg
#7

Tackar för alla svar - koden

strSearch = replace(strSearch," ","%")
q = "select * from (select dbo.DistributorContacts.ForeName + ' ' + dbo.DistributorContacts.LastName AS ContactName from t) s
where s.contactName like '%" & strSearch & "%'"

där fälten läggssamman funkar super!

264 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
120 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)