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)
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
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.
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
381 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91