Avatar billede iggipop Nybegynder
22. april 2004 - 14:40 Der er 13 kommentarer og
3 løsninger

Ged i søgning - if sætning driller

Har brugt de sidste par dage på at lave en søge side til min database......ligenu kommer der en fejl...Jeg tror det er mine if-sætninger der driller. Skriv hvis I skal bruge yderligere information :


<% Response.Buffer = True %>
<html><head>
<title>Søgeresultat</title>
<link rel="stylesheet" type="text/css" href="stil.css">
</head><body bgcolor=#F9F9F9>

<%
'Henter værdien fra soeg.htm
strKeyword     = Trim(Request.Form("Keyword"))
strKategori     = Trim(Request.Form("Kategori"))
strSort         = Trim(Request.Form("Sort"))
strRetning     = Trim(Request.Form("Retning"))

strKeyword     = Replace(strKeyword,"'","''")
strKategori     = Replace(strKategori,"'","''")
strSort         = Replace(strSort,"'","''")
strKategori     = Replace(strKategori,"'","''")


if strRetning = "Stigende" then
  strRet = "asc;"
end if

if strRetning = "Faldende" then
  strRet = "desc;"
end if

' Opbygger en dynamisk SQL streng

If strKeyword <> "" then
  If strkategori = "Alle" then
  strSQL = "SELECT * FROM tipstabel WHERE"
  strSQL = strSQL & " ((forfatter LIKE '%" & strKeyword & "%')"
  strSQL = strSQL & " OR (overskrift LIKE '%" & strKeyword & "%')"
  strSQL = strSQL & " OR (tips LIKE '%" & strKeyword & "%'))"
  strSQL = strSQL & " Order by " & StrSort
  strSQL = strSQL & " " & StrRet
  Else
  strSQL = "SELECT * FROM tipstabel WHERE"
  strSQL = strSQL & " ((forfatter LIKE '%" & strKeyword & "%')"
  strSQL = strSQL & " OR (overskrift LIKE '%" & strKeyword & "%')"
  strSQL = strSQL & " OR (tips LIKE '%" & strKeyword & "%'))"
  strSQL = strSQL & " AND (kategori = '" & strKategori & "')"
  strSQL = strSQL & " Order by " & StrSort
  strSQL = strSQL & " " & StrRet
  End if
Else
  If strkategori = "Alle" then
  strSQL = "SELECT * FROM tipstabel "
  strSQL = strSQL & " Order by " & StrSort
  strSQL = strSQL & " " & StrRet
  Else
  strSQL = "SELECT * FROM tipstabel where"
  strSQL = strSQL & " (kategori = '" & strKategori & "')"
  strSQL = strSQL & " Order by " & StrSort
  strSQL = strSQL & " " & StrRet
  End if
End if


' Skaber DSNLess forbindelse til DBen
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("tips.mdb")
Set myConn = Server.CreateObject("ADODB.Connection")
myConn.Open strDSN

Response.Write( strSQL )
' Skaber et recordset udfra SQL strengen
Set rs = myConn.Execute(strSQL)
If Not (rs.BOF Or rs.EOF) Then
    ' Hvis der er fundet poster på søgningen
    Response.Write "<div align='center'>"
    Response.Write "<table border='0' width='100%' cellpadding='0' cellspacing='0'>"
    Response.Write "<tr>"
    Response.Write "<td bgcolor='#CCCCCC'>"
    if strkeyword="" then
    Response.Write "<font face='verdana' size='1'>Der er søgt efter <b> alle forekomster"
    else
    Response.Write "<font face='verdana' size='1'>Der er søgt efter <b>"&strkeyword
    end if
    Response.Write "<font face='verdana' size='1'></b> i kategorien <b>"&strkategori
    Response.Write "<font face='verdana' size='1'></b>. Resultatet er sorteret efter <b>"&strsort
    Response.Write "<font face='verdana' size='1'></b>,<b> "&strretning&".<br><br></b>"
    Response.Write "</td>"
    Response.Write "</tr>"
    Response.Write "</table>"
    Response.Write "</div>"   

    Response.Write "<br>"   
   
    Response.Write "<div align='center'>"
    Response.Write "<table border='0' width='100%'>"
    Response.Write "<tr>"
    Response.Write "<td align='left' width='50%'>"
    Response.Write "<font face='verdana' size='2'><b>Søgeresultat</b>"
    Response.Write "</td>"
    Response.Write "<td align='right' width='50%'>"
    Response.Write "<font face='verdana' size='1'><a href='search.htm' target='_self'>Ny søgning</a>"
    Response.Write "</td>"
    Response.Write "</tr>"
    Response.Write "</table>"
    Response.Write "</div>"   

    Response.Write "<br>"   
   
    Response.Write "<div align='center'>"
    Response.Write "<table border='0' width='100%'>"
    Response.Write "<tr>"
    Response.Write "<td width='20%'><font face='verdana' size='1'><b>Forfatter</td>"
    Response.Write "<td width='25%'><font face='verdana' size='1'><b>Overskrift</td>"
    Response.Write "<td width='35%'><font face='verdana' size='1'><b>Tips</td>"
    Response.Write "<td width='20%'><font face='verdana' size='1'><b>Kategori</td>"
    Response.Write "</tr>"
    Response.Write "<tr>"
    Response.Write "<td colspan='4'><hr size='1'>"
    Response.Write "</tr>"
    Response.Write "</table>"
    Response.Write "</div>"   

   
    Do While Not rs.EOF

    Response.Write "<div align='center'>"
    Response.Write "<table border='0' width='100%'>"
    Response.Write "<tr>"
    Response.Write "<td width='20%'><font face='verdana' size='1'>" & rs("Forfatter") & "</td>"
    Response.Write "<td width='25%'><font face='verdana' size='1'><a href=""#"" onclick=""window.open('view_search_selected.asp?ID="&rs("ID_no")&"','viewSel','height=350,width=550,top=209,screenY=209,left=237,screenX=237,toolbar=no,scrollbars=yes,menubar=no');return false;"">"
    Response.Write (rs("Overskrift"))
    Response.Write ("</a>")
    Response.Write "</td>"
    Response.Write "<td width='35%'><font face='verdana' size='1'>" & left(rs("tip"),50) & "...</td>"
    Response.Write "<td width='20%'><font face='verdana' size='1'>" & rs("kategori") & "</td>"
    Response.Write "</tr>"
    Response.Write "</div>"

        rs.MoveNext
    Loop
    Response.Write "</table>"
Else
    ' Hvis der ikke er fundet poster på søgningen
    Response.Write "<p>Der er ikke fundet noget på denne søgning</p>"
End If

' Rydder op efter os
myConn.Close
Set myConn = Nothing
%>

</body></html>
Avatar billede iggipop Nybegynder
22. april 2004 - 14:41 #1
Hvis keyword feltet udelades så virker det, men så snart der indtastes noget i keyword får jeg en fejl :

Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.
/test/krc/tipsbasen/search.asp, line 68
Avatar billede fennec Nybegynder
22. april 2004 - 14:42 #2
det ville være fedt hvis vi kunne få fejl koden....
Avatar billede fennec Nybegynder
22. april 2004 - 14:45 #3
hvad indeholder strSQL???
Avatar billede iggipop Nybegynder
22. april 2004 - 14:48 #4
Fejlkoden er der ... øøhhh vil du se den side jeg kalder search.asp fra ?
Avatar billede fennec Nybegynder
22. april 2004 - 14:51 #5
glem den post. Jeg fik den skrevet inden du kom med fejlkoden.

Bare vis mig strSQL i sin fulde form. Du skriver den allerede ud, så "paste" den lige ind, så jeg kan se den.
Avatar billede iggipop Nybegynder
22. april 2004 - 15:23 #6
Jeg kan jo ikke vise dig den. Der kommer jo den fejl på siden !!!!
Avatar billede fennec Nybegynder
22. april 2004 - 15:31 #7
hvad.....

fejlen er i linje 68, og du skriver SQL'en ud i linje 66. Så den skulle gerne stå der. lige over fejlkoden.....
Avatar billede iggipop Nybegynder
22. april 2004 - 15:32 #8
Nu har jeg lavet en fuskerside der ikke gør andet end at skrive strsql ud.. hvis jeg indtaster et keyword ser den sådan her ud:

SELECT * FROM tipstabel WHERE ((forfatter LIKE '%sdfsdf%') OR (overskrift LIKE '%sdfsdf%') OR (tips LIKE '%sdfsdf%')) Order by Dato asc;
Avatar billede iggipop Nybegynder
22. april 2004 - 15:32 #9
Nej...før jeg lavede fuskersiden kom det her blot :

The page cannot be displayed
There is a problem with the page you are trying to reach and it cannot be displayed.

--------------------------------------------------------------------------------

Please try the following:

Click the Refresh button, or try again later.

Open the webserver home page, and then look for links to the information you want.
HTTP 500.100 - Internal Server Error - ASP error
Internet Information Services

--------------------------------------------------------------------------------

Technical Information (for support personnel)

Error Type:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.
/test/krc/tipsbasen/search.asp, line 68


Browser Type:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)

Page:
POST 75 bytes to /test/krc/tipsbasen/search.asp

POST Data:
Keyword=dfg&kategori=Alle&sort=Dato&retning=Stigende&Action=Start+s%F8gning

Time:
22. april 2004, 15:33:18


More information:
Microsoft Support
Avatar billede iggipop Nybegynder
22. april 2004 - 15:52 #10
SQL-strengen ser da rigtig nok ud ik ? Selve If sætningen kan jeg heller ikke se skulle være forkert ?!?!
Avatar billede fennec Nybegynder
22. april 2004 - 15:56 #11
Jeg kan ikke se nogen fejl i SQL'en. Og der ser heller ikke ud til at være fejl i de andre IF.
Avatar billede eagleeye Praktikant
22. april 2004 - 21:46 #12
Den fejl betyder som regel at der er et kolonnenavn i SQL sætning som ikke findes i tabelen. Så dobbelttjek kolonnenavne.

En anden ting kan være at prøve at sætte [] omkring alle kolonne hvis et af dem driller databasen, er reserveret.

SELECT * FROM [tipstabel] WHERE (([forfatter] LIKE '%sdfsdf%') OR ([overskrift] LIKE '%sdfsdf%') OR ([tips] LIKE '%sdfsdf%')) Order by [Dato] asc;


Du kan for test evt. også prøve at laves din SQL så simpel som muligt og så bygge mere og mere på:
1.  "SELECT * FROM tipstabel"
2.  "SELECT * FROM tipstabel WHERE forfatter LIKE '%sdfsdf%'"
3.  "SELECT * FROM tipstabel WHERE forfatter LIKE '%sdfsdf%' OR overskrift LIKE '%sdfsdf%'"
osv.
Avatar billede iggipop Nybegynder
22. april 2004 - 22:14 #13
Hey eagleeye > Jeg havde lige selv fundet ud af det. Jeg fandt en hjemmeside der beskrev det samme som du gør her. Det er nemlig rigtigt. Mit tips felt hedder tip og ikke tips.....det er sgu ikke nemt at tyde udfra fejlteksten. Men smid et svar begge for hjælpen !
Avatar billede eagleeye Praktikant
22. april 2004 - 22:40 #14
ok, her et svar fra mig :)
Avatar billede fennec Nybegynder
23. april 2004 - 08:02 #15
her er mit.
Avatar billede iggipop Nybegynder
23. april 2004 - 09:08 #16
Og her mit
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