25. april 2002 - 01:27Der er
15 kommentarer og 2 løsninger
Søgefunktion baseret på Access
Jeg er ikke så skrap til ASP (har 'leget' med det i nogle timer sammenlagt) - så bær over med at jeg måske forklarer visse ting unødvendigt kringler, og måske ikke i de rigtige termer ;o) - Mit spg. falder i to dele ...
* * * * * 1 * * * * * Jeg ønsker en søgefunktion som søger blandt forskellige felter i én enkelt Access database. Felterne er både tekst og tal.
Jeg ønsker en stump kode som gør det muligt at søge vha. fil.asp?var1=value1&var2=value2 - og derudover at fx. et tal-felt der hedder 'PRIS' kan angives med min og max.
Jeg har allerede en ASP-side der laver et album bygget på enkelte variable, fx. 'shape=square' og vil gerne have ny SELECT-frase som virker med både album.asp?shape=square, og album.asp?back=green&shape=square og endelig album.asp?back=green&skape=square&price_min=100&price_max=200 - og endelig hvor 'price' defineres fast, og ikke som interval.
Således at jeg kan bruge samme ASP-side til at kalde et album kun baseret på en 'kategori' og som samtidig indeholder den kode der gør det muligt at angive flere variable og 'intervaller' (ved pris).
***** 2 ****** Jeg ønsker en HTML-form der vha. af dropdowns gør det muligt at vælge mellem forskellige værdier til variablene, fx. shape=triangle/square/circle og angivelse af min. pris, max. pris ELLER exact pris - endelig skal formen smide resultatet ind i som QueryStrings (Tror jeg nok de hedder) i den ASP-side fra pkt. 1 :o)
Design har selvsagt laveste prioritet, da jeg udelukkende vil kigge på funktionalitet indtil det spiller! :o)
* * * * *
Sidst men ikke mindst vil jeg gerne ha' nogle kommentarer i koden så jeg kan gennemskue hvad pokker der sker! ;o) - og mangler i mere info så spørg endelig!! :o)
her kan du nemlig finde færdige eksempler til download som du kan kigge i, og desuden har de alle tutorials der - fx - kan lære dig at søge i en access database
sådan her? du skal selvfølgelig lige huske at hente værdierne ind vha. request("variabelnavn")..
'din sql streng uden kriterier sql = "select * from tabel"
'test om kriterier skal inkluderes, og gør det, hvis de skal if len(ffore)>0 then MINSTRENG = MINSTRENG & "fore = '" & ffore & "' AND " if len(fback)>0 then MINSTRENG = MINSTRENG & "back = '" & fback & "' AND " if len(fshape)>0 then MINSTRENG = MINSTRENG & "shape = '" & fshape & "' AND " if len(fprice_min)>0 then MINSTRENG = MINSTRENG & "price_min <= " & fprice_min & " AND " if len(fprice_max)>0 then MINSTRENG = MINSTRENG & "price_max >= " & fprice_max & " AND "
'føj dine to sql strenge sammen, hvis der er nogen kriterier angivet, 'og fjern de sidste "AND " fra slutningen if len(MINSTRENG)>0 then sql = sql & " WHERE " & left(MINSTRENG,len(MINSTRENG)-4)
hehe.. price_min og price_max skal vist erstattes med price (eller hvad du nu kalder feltet med prisen). men det er altså bare de to lige til venstre for hhv. <= og >= tegnene
kimiwan -> Jepz, lige bortset fra at price_min og price_max ikke eksisterer som felter i basen, men SELECT skal returnere de records hvor PRICE ligger melle fprice_min og fprice_max! :o) ... Eksperten holder max! :o)
'Connection String '(make sure at least one string is uncommented and you inserted the right sources!) strConn = "Provider=Microsoft.Jet.OLEDB.4.0; Persist Security Info=False; Data Source=" & Server.MapPath(strDBPath)
'din sql streng uden kriterier frase = "select * from tabel"
'test om kriterier skal inkluderes, og gør det, hvis de skal if len(ffore)>0 then MINSTRENG = MINSTRENG & "fore = '" & ffore & "' AND " if len(fback)>0 then MINSTRENG = MINSTRENG & "back = '" & fback & "' AND " if len(fshape)>0 then MINSTRENG = MINSTRENG & "shape = '" & fshape & "' AND " if len(fprice_min)>0 then MINSTRENG = MINSTRENG & "price <= " & fprice_min & " AND " if len(fprice_max)>0 then MINSTRENG = MINSTRENG & "price >= " & fprice_max & " AND "
'føj dine to sql strenge sammen, hvis der er nogen kriterier angivet, 'og fjern de sidste "AND " fra slutningen if len(MINSTRENG)>0 then frase = frase & " WHERE " & left(MINSTRENG,len(MINSTRENG)-4)
Set objConn = Server.CreateObject("ADODB.Connection") Set objRs = Server.CreateObject("ADODB.Recordset") objConn.Open strConn objRs.Open frase,objConn, 0, 1
Nu har jeg fundet ud af at man skal bruge strKeyword = Request.Form("Keyword") til formen, hvordan får jeg smartest puttet ind at ASP-siden skal hente alle de ønskede variable fra QueryString, medmindre de er defineret i Form - hvor variablene fra Form skal benyttes istedet? :o)
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.