Avatar billede hifi4all Nybegynder
26. januar 2006 - 10:51 Der er 10 kommentarer og
1 løsning

Søgning MSSQL, problemer med 'between'

Jeg har en søge funktion, som virker, med undtagelse af søgning i en pris mellem x og y. Det er således 'between' statementet jeg ikke kan få til fungere.

Nogen der har en løsning?

På forhånd tak!

Kode:
<%
Produkttype = " '%' "
Lokalitet = " '%' "
Annoncetype = " '%' "
Fritekst = " '%' "
PrisMin = " '%' "
PrisMax = " '%' "

    if Request.Form("Produkttype") <> "" then
        Produkttype = " '%" & Request.Form("Produkttype")& "%' "
    end if
    if Request.Form("Lokalitet") <> "" then
        Lokalitet =  " '%" & Request.Form("Lokalitet")& "%' "
    end if
    if Request.Form("Annoncetype") <> "" then
        Annoncetype =  " '" & Request.Form("Annoncetype")& "' "
    end if
        if Request.Form("PrisMin") <> "" then
        PrisMin =  " '" & Request.Form("PrisMin") & "' "
    end if
      if Request.Form("PrisMax") <> "" then
        PrisMax =  " '" & Request.Form("PrisMax") & "' "
    end if
    if Request.Form("fritekst") <> "" then
        fritekst =  " '%" & Request.Form("fritekst")& "%' "
    end if
   
    '----------------------------------------------------------------------

    if Request.QueryString("produkttype") <> "" then
        produkttype = " '%" & Request.QueryString("produkttype")& "%' "
    end if
    if Request.QueryString("lokalitet") <> "" then
        lokalitet =  " '%" & Request.QueryString("lokalitet") & "%' "
    end if
      if Request.QueryString("Annoncetype") <> "" then
        Annoncetype =  " '" & Request.QueryString("Annoncetype") & "' "
    end if
    if Request.QueryString("PrisMin") <> "" then
        PrisMin =  " '" & Request.QueryString("PrisMin") & "' "
    end if
      if Request.QueryString("PrisMax") <> "" then
        PrisMax =  " '" & Request.QueryString("PrisMax") & "' "
    end if
    if Request.QueryString("fritekst") <> "" then
        fritekst =  " '%" & Request.QueryString("fritekst") & "%' "
    end if
   
set rsSearch = Server.CreateObject("ADODB.Recordset")
rsSearch.ActiveConnection = Conn_STRING
If NOT Request.QueryString("PrisMin") AND NOT Request.Form("PrisMin") = "" Then
rsSearch.Source = "SELECT * FROM ADS, tblAuthor, TYPES WHERE AD_KATEGORI LIKE" & Produkttype & " AND Location LIKE" & Lokalitet & " AND AD_TYPE LIKE" & Annoncetype & " AND (AD_TITLE LIKE " & fritekst & " OR AD_DESCRIPTION LIKE " & fritekst & " OR Username LIKE " & fritekst & ") AND (AD_PRICE BETWEEN " & PrisMin & " AND " & PrisMax & ") AND AD_EXPIRED >= GetDate()  AND AD_POSTER = username AND AD_TYPE = TYPE_ID AND active = 1 ORDER BY AD_ID DESC"
else
rsSearch.Source = "SELECT * FROM ADS, tblAuthor, TYPES WHERE AD_KATEGORI LIKE" & Produkttype & " AND Location LIKE" & Lokalitet & " AND AD_TYPE LIKE" & Annoncetype & " AND (AD_TITLE LIKE " & fritekst & " OR AD_DESCRIPTION LIKE " & fritekst & " OR Username LIKE " & fritekst & ") AND AD_EXPIRED >= GetDate()  AND AD_POSTER = username AND AD_TYPE = TYPE_ID AND active = 1 ORDER BY AD_ID DESC"
end if
rsSearch.CursorType = 0
rsSearch.CursorLocation = 2
rsSearch.LockType = 3
rsSearch.Open()
rsSearch_numRows = 0
count = 0
Do while Not rsSearch.EOF
count = count + 1
rsSearch.MoveNext
Loop
if count > 0 then
rsSearch.MoveFirst
end if
%>
Avatar billede softspot Forsker
26. januar 2006 - 11:01 #1
Er det ikke fordi dine priser er lavet som strenge i forspørgslen og ikke som tal...?
Avatar billede ldanielsen Nybegynder
26. januar 2006 - 11:04 #2
Lad os kigge på den SQL-string der ikke virker. Du kan udskrive den med

Response.Write(rsSearch.Source)

lige før linien

rsSearch.Open()

Som jeg ser det sætter du ' omkring priserne. Er det da tekstfelter? Hvis det er det, vil BETWEEN og enhver form for sortering være alfabetisk, hvilket betyder at 20 er større end 1000.

Hvilken datatype er feltet AD_PRICE?
Avatar billede hifi4all Nybegynder
26. januar 2006 - 11:25 #3
AD_price er en talværdi, og burde (så vidt jeg kan se) også være angivet som en talværdi.
Avatar billede softspot Forsker
26. januar 2006 - 11:28 #4
...men det er prismin og prismax ikke (jf. denne kode):

    if Request.Form("PrisMin") <> "" then
      PrisMin =  " '" & Request.Form("PrisMin") & "' "
    end if
    if Request.Form("PrisMax") <> "" then
      PrisMax =  " '" & Request.Form("PrisMax") & "' "
    end if

Prøv i stedet med:

    if Request.Form("PrisMin") <> "" then
      PrisMin =  " " & Request.Form("PrisMin") & " "
    end if
    if Request.Form("PrisMax") <> "" then
      PrisMax =  " " & Request.Form("PrisMax") & " "
    end if
Avatar billede hifi4all Nybegynder
26. januar 2006 - 11:29 #5
så jeg skal blot fjerne ' ???
Avatar billede softspot Forsker
26. januar 2006 - 11:31 #6
Yes :)
Avatar billede hifi4all Nybegynder
26. januar 2006 - 11:41 #7
prøver det lige og vender tilbage...
Tak for den foreløbige hjælp! ;o)
Avatar billede hifi4all Nybegynder
06. februar 2006 - 09:26 #8
Lægger du et svar :O)
Avatar billede softspot Forsker
06. februar 2006 - 20:32 #9
Ja, det kan du tro. Vær så god :)
Avatar billede hifi4all Nybegynder
06. februar 2006 - 21:56 #10
Tak for hjælpen!
Avatar billede softspot Forsker
06. februar 2006 - 21:59 #11
Velbekomme og tak for point :)
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester