Jag försöker få ett formulär med ett textfält där man kan skriva in koder som "KJ6 BL9 L98 R74 EXP" osv.
Vad jag vill att SQL satsen ska göra är att behandla mellanslaget som en separator så att varje text längd sök efter i databasen, så att om man skriver in t.ex. "AAA Y84" i textfältet i formuläret och dessa två finns i databasen som skilda poster, så visas dom på nästa sida.
Här är nu SQL satsen, inte så sofistikerad inte...
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open Connection
SQL = "SELECT * from TABLE WHERE Code = '"& Searchstring &"' ORDER BY Code ASC"
set RS = Conn.execute(SQL)
@ndersMedlem sedan juni 200032 969 inlägg Det är visserligen mest ASP, men:
varSearch = Split(Request.Form("search"), " ")
for i = 0 to ubound (varSearch)
if not i = 0 then strSearch = strSearch & " OR "
strSearch = strSearch & " Code ='" & varSearch(i) & "'"
next
SQL = "SELECT * from TABLE WHERE ("& strSearch &") ORDER BY Code ASC"
Tackar och bockar, men vad händer om en kod inte hittas i databasen? Jag skulle behöva nånting som låter personen veta ifall det händer, som t.ex. i listan som genereras så visas också koden som inte fanns men där står det "This code was not found in this database", du vet ;)
Engine^Medlem sedan dec. 20003 887 inlägg Du testar om ditt recordset är tomt
Set RS = Conn.Execute(SQL)
If RS.EOF Then
[blue]'This code was not found[/blue]
Else
[blue]'The code was found[/blue]
End If
Mjo, jag försökte just det, men ingenting hände så jag trodde man behövde en annan metod, får kolla igen...
Näpp, funkar inte, ingenting kommer om recordsetet är tomt.
Engine^Medlem sedan dec. 20003 887 inlägg Det är väl hela tanken?
I don't begrip vad du menar... det är väl bara att skriva ut att recordset:et var tomt?
Nej, inte riktigt, kolla här:
http://www.hisdivineshadow.com/misc/RPO
Om du skriver in Y84 EXP AAA K05 så får du till svar:
AAA = 4-WAY MANUAL SEAT ADJUSTER
K05 = HEATER ENG, BLOCK-------------------/
Y84 = MERCHANDISED PKG, GTA, TRANS AM
Vad jag också vill att det ska säga är nått som:
EXP = This code wasn't found in the database
Eller så kan det först eller sist lista koderna som inte hittades kanske såhär:
These codes weren't found: EXP etc etc.
Engine^Medlem sedan dec. 20003 887 inlägg Aha... ja då blev det ju knivigare. Då måste du ju testa varje sökord för sig och då tror jag inte man kan använda sig av en SQL-sats för att få ut något vettigt svar.
Enklaste lösningen ser väl ut såhär
varSearch = Split(Request.Form("search"), " ")
For Each strWord In varSearch
strSQL = "SELECT [i]Item[/i] FROM [i]TableX[/i] WHERE Code = '" & Replace(strWord, "'", "''") & "'"
RS.Open strSQL, Conn
If RS.EOF Then
strNotFound = strNotFound & " " & strWord
Else
Response.Write strWord & " : " & RS("Item")
End If
RS.Close
Next
If Not Len(strNotFound) = 0 Then
Response.Write "The following codes weren't found: " & strNotFound
End If
Jag tror att jag skulle ha börjat med något i den stilen. Det är väl kanske inte det smartaste sättet att lösa det, men det är en början ;)