Avatar billede olai Juniormester
01. december 2006 - 21:10 Der er 67 kommentarer og
1 løsning

Unterminated string constant

Hej Eksperter

Se lige her:


Denne søgeside:
<form name="search" onsubmit="return Validate();" method="post" action="search.asp">
    <p>Salgsheste - søgeside. </p>
    <p><select size="1" name="koen">
    <option selected>Vælg venligst køn</option>
    <option value="Hoppe">Hoppe</option>
    <option value="Vallak">Vallak</option>
    <option value="Hingst">Hingst</option>
    </select>
    <p><select size="1" name="aar">
    <option selected>Vælg alder</option>
    <option value="1 2 3 4">1-4 år</option>
    <option value="4 5 6 7 8">4-8 år</option>
    <option value="8 9 10 11 12 13 14">8-14 år</option>
    <option value="14 15 16 17 18 19 20">14 år -</option>
    </select></p>
    <p><select size="1" name="farve">
    <option selected>Vælg farve</option>
    <option value="Brun">Brun</option>
    <option value="Fuks">Fuks</option>
    <option value="Skimmel">Skimmel</option>
    <option value="Sort">Sort</option>
    <option value="Mørkebrun">Mørkebrun</option>
    </select></p>
    <p align="center">
                        <input class="FormButton" id="submit1" type="submit" value="Søg" name="submit1"></p>
</form>
</p>
    <div style="PADDING-LEFT: 5px; FLOAT: right; MARGIN-BOTTOM: 5px; WIDTH: 70px">
                        &nbsp;</div>
</form>


-------------------Er koblet sammen med denne her:
search.asp:


<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>salgsheste</title>
<meta http-equiv="Page-Enter" content="blendTrans(Duration=1.0)">
<style type="text/css">
<!--
.style1 {
    color: #CCCCCC;
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 14px;
}
.style16 {color: #A7A7A7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; }
.style17 {color: #A7A7A7}
.style18 {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 12px;
    color: #CCCCCC;
}
.style37 {color: #CCCCCC; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; }
.style47 {color: #CCCCCC; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px; }
.style45 {font-size: 12px}
.style8 {font-family: Verdana, Arial, Helvetica, sans-serif; color: #CCCCCC; font-size: 12px; }
.style10 {
    font-size: 9px;
    color: #CCCCCC;
    font-family: Verdana, Arial, Helvetica, sans-serif;
}
-->
</style>
</head>

<body background="../baggrundsalgsheste%20copy.jpg" style="background-attachment: fixed">
<div align="center">
<p>&nbsp;</p>
<p>
<%
Set conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("db.mdb")
sql = "select * from heste where heste '" + Request.querystring("koen") + Request.querystring("aar") + Request.querystring("farve") +"'
order by navn desc"
Set rs = Conn.Execute(sql)
%>
    </p>
    <table border="0" width="538" cellspacing="1">
        <tr>
            <td width="4">&nbsp;</td>
            <td bgcolor="#9EBAA8" align="center" width="101">
            <p align="center"><font face="Arial" size="2">Navn</font></td>
            <td bgcolor="#9EBAA8" align="center" width="27">
            <font face="Arial" size="2">År</font></td>
            <td bgcolor="#9EBAA8" align="center" width="53">
            <font face="Arial" size="2">Dressur</font></td>
            <td bgcolor="#9EBAA8" align="center" width="51">
            <font face="Arial" size="2">Spring</font></td>
            <td bgcolor="#9EBAA8" align="center" width="49">
            <font face="Arial" size="2">Køn</font></td>
            <td bgcolor="#9EBAA8" align="center" width="53">
            <font face="Arial" size="2">Farve</font></td>
            <td bgcolor="#9EBAA8" align="center" width="48">
            <font face="Arial" size="2">Stg.</font></td>
            <td bgcolor="#9EBAA8" align="right" width="99">
            <p align="center"><font face="Arial" size="2">
            Pris</font></td>
            <td align="center" width="22">&nbsp;</td>
        </tr>
<%do while not rs.EOF%>
        <tr>
            <td width="4" align="center"><font face="Arial" size="1" color="#FF0000"><% if rs("solgt") = false then%><%dato = rs("dato")
            IF Datediff("d", date, dato) > -14 then response.write "ny" end if%><%else%><% if rs("solgt") then response.write "solgt" end if%><%end if%></font></td>
            <td width="101"><% if rs("solgt") = true then%><b><font color="#FF0000" face="Arial" size="2"><a href="vishest.asp?id=<%=rs("id")%>"><font color="#FF0000"><%=rs("navn")%></font></a></font><font color="#FF0000"><%else%><font face="Arial" size="2"><a href="vishest.asp?id=<%=rs("id")%>"><font color="#000000"><%=rs("navn")%></font></a></font><%end if%></font></td>
            <td width="27" align="center"><font face="Arial" size="2"><%=rs("aar")%></font></td>
            <td width="53" align="center"><font face="Arial" size="2"><%=rs("dressur")%></font></td>
            <td width="51" align="center"><font face="Arial" size="2"><%=rs("spring")%></font></td>
            <td width="49" align="center"><font face="Arial" size="2"><%=rs("koen")%></font></td>
            <td width="53" align="center"><font face="Arial" size="2"><%=rs("farve")%></font></td>
            <td width="48" align="center"><font face="Arial" size="2"><%=rs("stg")%></font></td>
            <td align="right" width="99"><font face="Arial" size="2"><% if rs("pris") = "0" or rs("pris") = Null then response.write "-" else response.write rs("pris") end if%></font></td>
            <td align="center" width="22"><font size="1" face="Arial" color="#FF0000"><% if rs("video") = "ingen" then%><%else%><% if rs("video") <> "" then response.write "video" end if %><%end if%></font></td>
        </tr>
<%
rs.movenext
loop
%>
        </table>
</div>

</div>

<p align="center">&nbsp;</p>

</body>

</html>




Når man prøver at søge kommer dette frem:
_________________________________________________
Microsoft VBScript compilation error '800a0409'

Unterminated string constant

/asp/search.asp, line 41

sql = "select * from heste where heste '" + Request.querystring("koen") + Request.querystring("aar") + Request.querystring("farve") +"'
---------------------------------------------------------------------------------------------------------------------------------------^


HVad skal jeg gøre...
Avatar billede softspot Forsker
01. december 2006 - 21:15 #1
Du må ikke have linieskift inde midt i en streng, så du kan omskrive denne linie:

sql = "select * from heste where heste '" + Request.querystring("koen") + Request.querystring("aar") + Request.querystring("farve") +"'
order by navn desc"

til dette

sql = "select * from heste where heste '" + Request.querystring("koen") + Request.querystring("aar") + Request.querystring("farve") +"' order by navn desc"

I øvrigt er det nok bedst at benytte & i stedet for + til at sammensætte strenge i VBS.
Avatar billede olai Juniormester
01. december 2006 - 21:17 #2
prøver lige :-)
Avatar billede olai Juniormester
01. december 2006 - 21:20 #3
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'heste '''.

/asp/search.asp, line 42
Avatar billede olai Juniormester
01. december 2006 - 21:21 #4
Line 42 :  Set rs = Conn.Execute(sql)
Avatar billede thesurfer Nybegynder
01. december 2006 - 22:20 #5
Det skal være: where heste = '

Dvs, du mangler et "=" tegn..
Avatar billede olai Juniormester
01. december 2006 - 22:26 #6
where heste = ' + Request.querystring

sådan ??
Avatar billede softspot Forsker
01. december 2006 - 22:26 #7
Nå ja, den havde jeg ikke lige opdaget (den anden fejl forblændede mig)...
Avatar billede olai Juniormester
01. december 2006 - 22:31 #8
Så er den gal igen:

Microsoft VBScript compilation error '800a0401'

Expected end of statement

/asp/search.asp, line 41

sql = "select * from heste where heste = ' + Request.querystring("koen") + Request.querystring("aar") + Request.querystring("farve") +"' order by navn desc"
------------------------------------------------------------------^
Avatar billede olai Juniormester
01. december 2006 - 22:33 #9
smider snart computeren ud af vinduet, havde egentlig sat mig for at prøve at lære det her asp, men hold da op, it ain´t easy :-(
Avatar billede olai Juniormester
01. december 2006 - 22:49 #10
Har prøvet mig lidt frem:
sql = "select * from heste where heste = '" + Request.querystring("koen") + Request.querystring("aar") + Request.querystring("farve") +"' order by navn desc"
Set rs = Conn.Execute(sql)

Så siger den:

Microsoft OLE DB Provider for ODBC Drivers error '80040e10'

[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.

/asp/search.asp, line 42
Avatar billede softspot Forsker
01. december 2006 - 23:04 #11
Det lyder som om du har stavet (felterne) heste eller navn forkert ifht. det der står i databasen...
Avatar billede olai Juniormester
01. december 2006 - 23:17 #12
desværre ikke..
Avatar billede softspot Forsker
01. december 2006 - 23:19 #13
Prøv at indsætte disse to linier

Response.Write sql
Response.End

før

Set rs = Conn.Execute(sql)

Det udskriver lige den SQL-sætning du har fået sammensat (og standser sidens udførsel). Det kan være du hurtigt kan se hvad der er galt når du ser den færdige SQL. Smid den evt. ind her, så vi kan hjælpe med at kigge på den...
Avatar billede olai Juniormester
01. december 2006 - 23:25 #14
Okay, se her:
http://www.akhorses.dk/db.jpg

Et billede af databasen...

Har jeg ikke forstået ret hvis jeg skal skrive de 3 som ses på billedet i:

+ Request.querystring("koen")
Avatar billede olai Juniormester
01. december 2006 - 23:25 #15
okay prøver lige softspot
Avatar billede olai Juniormester
01. december 2006 - 23:28 #16
Den kom ud med det her:

select * from heste where heste = '' order by navn desc
Avatar billede softspot Forsker
01. december 2006 - 23:36 #17
Men hvor er kolonnen der hedder heste i din tabel?
Avatar billede olai Juniormester
01. december 2006 - 23:37 #18
øh den findes ikke . . . .
Avatar billede olai Juniormester
01. december 2006 - 23:38 #19
DOH
Avatar billede olai Juniormester
01. december 2006 - 23:38 #20
Hvordan skriver jeg så:
from heste where heste

Sådan:
from heste where id ???
Avatar billede softspot Forsker
01. december 2006 - 23:44 #21
Det kommer lidt an på hvad dit filtreringskriterie er, men noget kunne tyde på at du vil filtrere på koen, farve og aar. I så fald ville jeg skrive således:

sql = "select * " & _
      "from heste " & _
      "where koen = '" & replace(Request.querystring("koen"),"'","''") & "' " & _
      "and aar = " & Request.querystring("aar") & " " & _
      "and farve = '" & replace(Request.querystring("farve"),"'","''") & "' " & _
      "order by navn desc"
Avatar billede softspot Forsker
01. december 2006 - 23:45 #22
Du skal benytte "and"-operatoren hvis alle kriterierne skal matches for at rækken kommer med i resultatet. Hvis det bare et et af dem der skal matche for at rækken kommer med i resultatet, skal du benytte "or"-operatoren i din SQL-sætning.
Avatar billede olai Juniormester
01. december 2006 - 23:48 #23
Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntax error (missing operator) in query expression 'koen = '' and aar = and farve = '''.

/asp/search.asp, line 48
Avatar billede olai Juniormester
01. december 2006 - 23:50 #24
Response.Write sql
Response.End

=

select * from heste where koen = '' and aar = and farve = '' order by navn desc
Avatar billede olai Juniormester
01. december 2006 - 23:53 #25
er ASP altid så umuligt ? :-)
Avatar billede softspot Forsker
01. december 2006 - 23:55 #26
Det er nok fordi der ikke er nogen værdi i Request.querystring("aar"). Hvis der ikke er en værdi i dette felt (og det felt i øvrigt er et talfelt - altså typen af feltet - i databasen), så opstår der en fejl når man udfører forspørgslen.

Såvidt jeg kunne se på din SQL fra 01/12-2006 23:28:05, så var der ikke noget i nogle af parametrene. Du bør under alle omstændigheder lægge en validering af felterne ind i formularen på klienten, men også inden du benytter værdierne på serveren, til f.eks. at lave en forspørgsel i databasen.
Avatar billede olai Juniormester
01. december 2006 - 23:55 #27
Den her:

<%
Set conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("db.mdb")
sql = "select * from heste where koen = '" + Request.querystring("koen") + Request.querystring("aar") + Request.querystring("farve") +"' order by navn desc"
Set rs = Conn.Execute(sql)
%>

Melder ikke fejl, men den finder intet.....
Har det så noget at gøre med det sted man søger ud fra ?
Jeg har stillet en model op på:
http://www.akhorses.dk/ASP/test.asp
Kan det være fordi de ikke er forbundet rigtigt ???
Avatar billede olai Juniormester
01. december 2006 - 23:57 #28
<Såvidt jeg kunne se på din SQL fra 01/12-2006 23:28:05, så var der ikke noget i <nogle af parametrene. Du bør under alle omstændigheder lægge en validering af <felterne ind i formularen på klienten, men også inden du benytter værdierne på <serveren, til f.eks. at lave en forspørgsel i databasen.>>>>

Den database jeg sendte en kopi af var tom, men med nøjagtigt samme kolonner som den der er online...
Ja, >aar< feltet er et tal felt...
Avatar billede softspot Forsker
01. december 2006 - 23:57 #29
Det er ikke sværere end så meget andet programmering, men det kræver bare at man grundliggende forståelse af hvordan databaser, forspørgsler heri, samt (procedurale) programmeringssprog fungerer... :)

Det skal nok komme med øvelsen ;-)
Avatar billede olai Juniormester
02. december 2006 - 00:00 #30
Avatar billede softspot Forsker
02. december 2006 - 00:01 #31
"Melder ikke fejl, men den finder intet....."

Vi skal lige være enige om at bare fordi koden ikke melder fejl betyder det ikke at den er semantisk korrekt. Det er bare et udtryk for at den i det mindste er syntaktisk korrekt :)

Jeg tror den forspørgsel jeg har flikket sammen til dig i 01/12-2006 23:44:04 er god nok, du skal bare sikre dig at der er valide data i felterne aar inden du søger på dem. Alternativt, ikke søge på felterne hvis der ikke er angivet nogen værdi i dem (så skal du dog lige lave nogle forgreninger i opbygningen af din sql-sætning).
Avatar billede olai Juniormester
02. december 2006 - 00:03 #32
efter at have fjernet "aar"
Fra dit forslag:

sql = "select * " & _
      "from heste " & _
      "where koen = '" & replace(Request.querystring("koen"),"'","''") & "' " & _
      "and aar = " & Request.querystring("aar") & " " & _
      "and farve = '" & replace(Request.querystring("farve"),"'","''") & "' " & _
      "order by navn desc"

Virker den, men den finder intet fra databasen, på trods af at der er match. . .
Avatar billede softspot Forsker
02. december 2006 - 00:07 #33
Du kan lave en forspørgsel som tager hensyn til om der er noget indhold i felterne på denne måde:

sqlw = ""
sql = "select * from heste "
if Request.querystring("koen")&"" <> "" then
  sqlw = " where koen = '" & replace(Request.querystring("koen"),"'","''") & "' "
end if
if Request.querystring("aar")&"" <> "" and isnumeric(Request.querystring("aar")) then
  if len(sqlw) > 0 then
    sqlw = sqlw & " and "
  else
    sqlw = sqlw & " where "
  end if
  sqlw = sqlw & " aar = " & Request.querystring("aar") & " "
end if
if Request.querystring("farve")&"" <> "" then
  if len(sqlw) > 0 then
    sqlw = sqlw & " and "
  else
    sqlw = sqlw & " where "
  end if
  sqlw = sqlw & " farve = '" & replace(Request.querystring("farve"),"'","''") & " "
end if
sql = sql & sqlw & " order by navn desc"
Avatar billede softspot Forsker
02. december 2006 - 00:12 #34
Ehm... jeg kom lige til at kigge i din html-kode og det er jo ikke helt standard-kode, ja, rent faktisk er det slet ikke HTML-kode :)

Du skal sørge for at få HTML-koden bragt i orden (hvis den skal køre i andet end en Internet Explorer (men det bør du gøre under alle omstændigheder).

Den vigtigste pointe er dog nok at du poster dine form-felter, men forsøger at hente værdierne i Request.Querystring, hvilket ikke fører til noget godt. Når du poster noget fra en form, skal du aflæse værdierne i Request.Form. Det betyder at koden kommer til at se nogenlunde således ud:

sqlw = ""
sql = "select * from heste "
if Request.Form("koen")&"" <> "" then
  sqlw = " where koen = '" & replace(Request.Form("koen"),"'","''") & "' "
end if
if Request.Form("aar")&"" <> "" and isnumeric(Request.Form("aar")) then
  if len(sqlw) > 0 then
    sqlw = sqlw & " and "
  else
    sqlw = sqlw & " where "
  end if
  sqlw = sqlw & " aar = " & Request.Form("aar") & " "
end if
if Request.Form("farve")&"" <> "" then
  if len(sqlw) > 0 then
    sqlw = sqlw & " and "
  else
    sqlw = sqlw & " where "
  end if
  sqlw = sqlw & " farve = '" & replace(Request.Form("farve"),"'","''") & " "
end if
sql = sql & sqlw & " order by navn desc"
Avatar billede olai Juniormester
02. december 2006 - 00:14 #35
Ja for pokker, nu nærmer vi os ....

Bortset fra...

Prøv du lige at søg
Uanset de kriterier man stiller, finder den alle posterne frem....

http://www.akhorses.dk/ASP/test.asp

Koden på min "søgeside" er:

<form name="search" onsubmit="return Validate();" method="post" action="search.asp">
    <p>Salgsheste - søgeside. </p>
    <p><select size="1" name="koen">
    <option selected>Vælg venligst køn</option>
    <option>Hoppe</option>
    <option>Vallak</option>
    <option>Hingst</option>
    </select>
    <p><input type="text" name="aar" size="10" value="Skriv alder">år</p>
    <p><select size="1" name="farve">
    <option selected>Vælg farve</option>
    <option value="Brun">Brun</option>
    <option value="Fuks">Fuks</option>
    <option value="Skimmel">Skimmel</option>
    <option value="Sort">Sort</option>
    <option value="Mørkebrun">Mørkebrun</option>
    </select></p>
    <p align="center">
                        <input class="FormButton" id="submit1" type="submit" value="Søg" name="submit1"></p>
</form>
</p>
    <div style="PADDING-LEFT: 5px; FLOAT: right; MARGIN-BOTTOM: 5px; WIDTH: 70px">
                        &nbsp;</div>
</form>


Jeg ved ikke om jeg har nævnt det, ellers er det nok gået op for dig;
Jeg er ikke en haj til ASP, er absolut på babystadiet :-)
Avatar billede softspot Forsker
02. december 2006 - 00:19 #36
Jeg har lige flikket en HTML-side sammen til dig som overholder de mest basale regler for et HTML-dokument:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>
  <head>
    <title>Søg en hest</title>
    <script type="text/javascript">
      function Validate() {
        return true;
      }
    </script>
  </head>
  <body>

    <form name="search" onsubmit="return Validate();" method="post" action="search.asp">
      <p>Salgsheste - søgeside. </p>
      <p><select size="1" name="koen">
          <option selected>Vælg venligst køn</option>
          <option>Hoppe</option>
          <option>Vallak</option>
          <option>Hingst</option>
        </select></p>
      <p><input type="text" name="aar" size="10" value="Skriv alder">år</p>
      <p><select size="1" name="farve">
          <option selected>Vælg farve</option>
          <option value="Brun">Brun</option>
          <option value="Fuks">Fuks</option>
          <option value="Skimmel">Skimmel</option>
          <option value="Sort">Sort</option>
          <option value="Mørkebrun">Mørkebrun</option>
        </select></p>
      <p align="center">
    <input class="FormButton" type="submit" value="Søg"></p>
    </form>
    <div style="PADDING-LEFT: 5px; FLOAT: right; MARGIN-BOTTOM: 5px; WIDTH: 70px">&nbsp;</div>
   
  </body>
</html>
Avatar billede softspot Forsker
02. december 2006 - 00:21 #37
Men for at adressere dit sidste indlæg (02/12-2006 00:14:01), så kan du jo lige prøve at udskrive den sql-sætning der udføres (med det trick fra indlægget http://www.eksperten.dk/spm/748317#rid6535623)
Avatar billede olai Juniormester
02. december 2006 - 00:27 #38
select * from heste order by navn desc
Avatar billede softspot Forsker
02. december 2006 - 00:31 #39
Hvordan ser koden i search.asp efterhånden ud?
Avatar billede olai Juniormester
02. december 2006 - 00:33 #40
du får den lige:

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>salgsheste</title>
<meta http-equiv="Page-Enter" content="blendTrans(Duration=1.0)">
<style type="text/css">
<!--
.style1 {
    color: #CCCCCC;
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 14px;
}
.style16 {color: #A7A7A7; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; }
.style17 {color: #A7A7A7}
.style18 {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 12px;
    color: #CCCCCC;
}
.style37 {color: #CCCCCC; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; }
.style47 {color: #CCCCCC; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 10px; }
.style45 {font-size: 12px}
.style8 {font-family: Verdana, Arial, Helvetica, sans-serif; color: #CCCCCC; font-size: 12px; }
.style10 {
    font-size: 9px;
    color: #CCCCCC;
    font-family: Verdana, Arial, Helvetica, sans-serif;
}
-->
</style>
</head>

<body background="../baggrundsalgsheste%20copy.jpg" style="background-attachment: fixed">
<div align="center">
<p>&nbsp;</p>
<p>
<%
Set conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("db.mdb")
sqlw = ""
sql = "select * from heste "
if Request.querystring("koen")&"" <> "" then
  sqlw = " where koen = '" & replace(Request.querystring("koen"),"'","''") & "' "
end if
if Request.querystring("aar")&"" <> "" and isnumeric(Request.querystring("aar")) then
  if len(sqlw) > 0 then
    sqlw = sqlw & " and "
  else
    sqlw = sqlw & " where "
  end if
  sqlw = sqlw & " aar = " & Request.querystring("aar") & " "
end if
if Request.querystring("farve")&"" <> "" then
  if len(sqlw) > 0 then
    sqlw = sqlw & " and "
  else
    sqlw = sqlw & " where "
  end if
  sqlw = sqlw & " farve = '" & replace(Request.querystring("farve"),"'","''") & " "
end if
sql = sql & sqlw & " order by navn desc"
Response.Write sql
Response.End

Set rs = Conn.Execute(sql)
%>
    </p>
    <table border="0" width="538" cellspacing="1">
        <tr>
            <td width="4">&nbsp;</td>
            <td bgcolor="#9EBAA8" align="center" width="101">
            <p align="center"><font face="Arial" size="2">Navn</font></td>
            <td bgcolor="#9EBAA8" align="center" width="27">
            <font face="Arial" size="2">År</font></td>
            <td bgcolor="#9EBAA8" align="center" width="53">
            <font face="Arial" size="2">Dressur</font></td>
            <td bgcolor="#9EBAA8" align="center" width="51">
            <font face="Arial" size="2">Spring</font></td>
            <td bgcolor="#9EBAA8" align="center" width="49">
            <font face="Arial" size="2">Køn</font></td>
            <td bgcolor="#9EBAA8" align="center" width="53">
            <font face="Arial" size="2">Farve</font></td>
            <td bgcolor="#9EBAA8" align="center" width="48">
            <font face="Arial" size="2">Stg.</font></td>
            <td bgcolor="#9EBAA8" align="right" width="99">
            <p align="center"><font face="Arial" size="2">
            Pris</font></td>
            <td align="center" width="22">&nbsp;</td>
        </tr>
<%do while not rs.EOF%>

        <tr>
            <td width="4" align="center"><font face="Arial" size="1" color="#FF0000"><% if rs("solgt") = false then%><%dato = rs("dato")
            IF Datediff("d", date, dato) > -14 then response.write "ny" end if%><%else%><% if rs("solgt") then response.write "solgt" end if%><%end if%></font></td>
            <td width="101"><% if rs("solgt") = true then%><b><font color="#FF0000" face="Arial" size="2"><a href="vishest.asp?id=<%=rs("id")%>"><font color="#FF0000"><%=rs("navn")%></font></a></font><font color="#FF0000"><%else%><font face="Arial" size="2"><a href="vishest.asp?id=<%=rs("id")%>"><font color="#000000"><%=rs("navn")%></font></a></font><%end if%></font></td>
            <td width="27" align="center"><font face="Arial" size="2"><%=rs("aar")%></font></td>
            <td width="53" align="center"><font face="Arial" size="2"><%=rs("dressur")%></font></td>
            <td width="51" align="center"><font face="Arial" size="2"><%=rs("spring")%></font></td>
            <td width="49" align="center"><font face="Arial" size="2"><%=rs("koen")%></font></td>
            <td width="53" align="center"><font face="Arial" size="2"><%=rs("farve")%></font></td>
            <td width="48" align="center"><font face="Arial" size="2"><%=rs("stg")%></font></td>
            <td align="right" width="99"><font face="Arial" size="2"><% if rs("pris") = "0" or rs("pris") = Null then response.write "-" else response.write rs("pris") end if%></font></td>
            <td align="center" width="22"><font size="1" face="Arial" color="#FF0000"><% if rs("video") = "ingen" then%><%else%><% if rs("video") <> "" then response.write "video" end if %><%end if%></font></td>
        </tr>
<%
rs.movenext
loop
%>
        </table>
</div>

</div>

<p align="center">&nbsp;</p>

</body>

</html>
Avatar billede softspot Forsker
02. december 2006 - 00:33 #41
Jeg gætter på at du ikke har rettet SQL-sætningen til det jeg foreslog i indlægget 02/12-2006 00:12:25
Avatar billede softspot Forsker
02. december 2006 - 00:34 #42
...og det var så korrekt ;-)

Prøv lige at ændre method til get (i stedet for post) i din form i stedet for at ændre sql-sætningen...
Avatar billede softspot Forsker
02. december 2006 - 00:37 #43
Du skal dog også lige rette denne linie i sql-sætningen:

  sqlw = sqlw & " farve = '" & replace(Request.querystring("farve"),"'","''") & " "

den skal se således ud i stedet:

  sqlw = sqlw & " farve = '" & replace(Request.querystring("farve"),"'","''") & "' "

(der mangler en apostrof i slutningen af strengen)
Avatar billede olai Juniormester
02. december 2006 - 00:40 #44
Hvis jeg kun ændrer method til get, ser det sådan her ud når man søger:

Microsoft OLE DB Provider for ODBC Drivers error '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Syntax error in string in query expression 'koen = 'Vælg venligst køn' and aar = 3 and farve = 'Vælg farve order by navn desc'.

/asp/search.asp, line 64
Avatar billede softspot Forsker
02. december 2006 - 00:41 #45
Det er ikke fordi du har ændret til get, men fordi der mangler en apostrof (se 02/12-2006 00:37:27).
Avatar billede olai Juniormester
02. december 2006 - 00:45 #46
rettet, prøver lige igen . .
Avatar billede softspot Forsker
02. december 2006 - 00:46 #47
Du bør i øvrigt lave en value til dine select-kontroller på formularen, som er tomme hvis man ikke har valgt noget, på den måde vil de ikke komme til at indgå i søgningen.

Eksempelvis:

<select size="1" name="koen">
  <option value="" selected>Vælg venligst køn</option>
  <option value="Hoppe">Hoppe</option>
  <option value="Vallak">Vallak</option>
  <option value="Hingst">Hingst</option>
</select>

og

<select size="1" name="farve">
  <option value="" selected>Vælg farve</option>
  <option value="Brun">Brun</option>
  <option value="Fuks">Fuks</option>
  <option value="Skimmel">Skimmel</option>
  <option value="Sort">Sort</option>
  <option value="Mørkebrun">Mørkebrun</option>
</select>
Avatar billede olai Juniormester
02. december 2006 - 00:46 #48
søger men finder intet
Avatar billede softspot Forsker
02. december 2006 - 00:48 #49
Nu har du vel ikke rettet method på formularen til post igen, vel?
Avatar billede olai Juniormester
02. december 2006 - 00:51 #50
<form name="search" onsubmit="return Validate();" method="get" action="search.asp">

Nej, dog ikke
Avatar billede softspot Forsker
02. december 2006 - 00:52 #51
Tag denne form og kopier koden over i din test.asp:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>
  <head>
    <title>Søg en hest</title>
    <script type="text/javascript">
      function Validate() {
        return true;
      }
    </script>
  </head>
  <body>

    <form name="search" onsubmit="return Validate();" method="get" action="http://www.akhorses.dk/ASP/search.asp">
        <p>Salgsheste - søgeside. </p>
        <p><select size="1" name="koen">
            <option value="" selected>Vælg venligst køn</option>
            <option value="Hoppe">Hoppe</option>
            <option value="Vallak">Vallak</option>
            <option value="Hingst">Hingst</option>
          </select>
        <p><input type="text" name="aar" size="10" value="Skriv alder">år</p>
      <p>
        <select size="1" name="farve">
          <option value="" selected>Vælg farve</option>
          <option value="Brun">Brun</option>
          <option value="Fuks">Fuks</option>
          <option value="Skimmel">Skimmel</option>
          <option value="Sort">Sort</option>
          <option value="Mørkebrun">Mørkebrun</option>
        </select></p>
        <p align="center">
                <input class="FormButton" id="submit1" type="submit" value="Søg" name="submit1"></p>
    </form>
      <div style="PADDING-LEFT: 5px; FLOAT: right; MARGIN-BOTTOM: 5px; WIDTH: 70px">&nbsp;</div>
   
  </body>
</html>


Jeg ved DEN fungerer :)
Avatar billede softspot Forsker
02. december 2006 - 00:56 #52
Linien

<form name="search" onsubmit="return Validate();" method="get" action="http://www.akhorses.dk/ASP/search.asp">

kan du bare skrive kort (som du selv har gjort hidtil):

<form name="search" onsubmit="return Validate();" method="get" action="search.asp">

Jeg har bare den fulde adresse med fordi skulle teste den her fra min maskine...
Avatar billede olai Juniormester
02. december 2006 - 00:58 #53
Såååååååådan!!!!!!! Der var den sgu....
Uanset hvad du gjorde, så virker det 100% nu.

Hvis jeg på et tidspunkt vil tilføje test.asp en fuktion så man kan søge
mellem 2 aldre, f.eks. mellem 2 og 4 år.
Er det så indviklet ???
Avatar billede softspot Forsker
02. december 2006 - 01:00 #54
umiddelbart ville jeg smide en select på med de to muligheder:

<select name="aar">
  <option value="2">2 år</option>
  <option value="4">4 år</option>
</select>

Den skal så bare erstatte det tekstfelt der hedder "aar" i din formular... mere burde der ikke skulle laves.
Avatar billede softspot Forsker
02. december 2006 - 01:03 #55
Aaah! Den misforstod jeg vist...

Det kræver lidt mere at søge i et interval. Der skal du dels ændre formularen, dels sql-sætningens opbygning.
Avatar billede softspot Forsker
02. december 2006 - 01:08 #56
Du kan evt. prøve denne formular:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>
  <head>
    <title>Søg en hest</title>
    <script type="text/javascript">
      function Validate() {
        return true;
      }
    </script>
  </head>
  <body>

    <form name="search" onsubmit="return Validate();" method="get" action="http://www.akhorses.dk/ASP/search.asp">
      <p>Salgsheste - søgeside. </p>
      <p><select size="1" name="koen">
          <option value="" selected>Vælg venligst køn</option>
          <option value="Hoppe">Hoppe</option>
          <option value="Vallak">Vallak</option>
          <option value="Hingst">Hingst</option>
        </select>
      <p>
        <input type="text" name="aarfra" size="10" value=""> -
        <input type="text" name="aartil" size="10" value=""> år</p>
      <p>
        <select size="1" name="farve">
          <option value="" selected>Vælg farve</option>
          <option value="Brun">Brun</option>
          <option value="Fuks">Fuks</option>
          <option value="Skimmel">Skimmel</option>
          <option value="Sort">Sort</option>
          <option value="Mørkebrun">Mørkebrun</option>
        </select></p>
        <p align="center">
                <input class="FormButton" id="submit1" type="submit" value="Søg" name="submit1"></p>
    </form>
      <div style="PADDING-LEFT: 5px; FLOAT: right; MARGIN-BOTTOM: 5px; WIDTH: 70px">&nbsp;</div>
   
  </body>
</html>

og denne sql-opsætning:

sqlw = ""
sql = "select * from heste "
if Request.querystring("koen")&"" <> "" then
  sqlw = " where koen = '" & replace(Request.querystring("koen"),"'","''") & "' "
end if

aarfra = Request.querystring("aarfra")&""
aartil = Request.querystring("aartil")&""
if aarfra <> "" and isnumeric(aarfra) and aartil <> "" and isnumeric(aartil) then
  if len(sqlw) > 0 then
    sqlw = sqlw & " and "
  else
    sqlw = sqlw & " where "
  end if
  sqlw = sqlw & " aar between " & aarfra & " and " & aartil & " "

elseif aarfra <> "" and isnumeric(aarfra) then
  if len(sqlw) > 0 then
    sqlw = sqlw & " and "
  else
    sqlw = sqlw & " where "
  end if
  sqlw = sqlw & " aar >= " & aarfra & " "

elseif aartil <> "" and isnumeric(aartil)
  if len(sqlw) > 0 then
    sqlw = sqlw & " and "
  else
    sqlw = sqlw & " where "
  end if
  sqlw = sqlw & " aar <= " & aartil & " "

end if

if Request.querystring("farve")&"" <> "" then
  if len(sqlw) > 0 then
    sqlw = sqlw & " and "
  else
    sqlw = sqlw & " where "
  end if
  sqlw = sqlw & " farve = '" & replace(Request.querystring("farve"),"'","''") & "' "
end if
sql = sql & sqlw & " order by navn desc"
Avatar billede olai Juniormester
02. december 2006 - 01:09 #57
Så pyt, det var bare hvis det var en lille ændring.

Jeg har fået FULD valuta for pointsene.
Hvis du smider et svar kvitterer jeg med 150 points.
Avatar billede olai Juniormester
02. december 2006 - 01:10 #58
og tak for kampen!!
Avatar billede olai Juniormester
02. december 2006 - 01:12 #59
prøver lige
Avatar billede softspot Forsker
02. december 2006 - 01:13 #60
Evt. med lidt validering på om fra er større end til (og så lige en lille rettelse til den forrige sql-kode):

sqlw = ""
sql = "select * from heste "
if Request.querystring("koen")&"" <> "" then
  sqlw = " where koen = '" & replace(Request.querystring("koen"),"'","''") & "' "
end if

aarfra = Request.querystring("aarfra")&""
aartil = Request.querystring("aartil")&""
if aarfra <> "" and isnumeric(aarfra) and aartil <> "" and isnumeric(aartil) then
  if aarfra > aartil then
    ' byt rundt på alderen hvis til er mindre end fra...
    tmp = aartil
    aartil = aarfra
    aarfra = tmp
  end if

  if len(sqlw) > 0 then
    sqlw = sqlw & " and "
  else
    sqlw = sqlw & " where "
  end if
  sqlw = sqlw & " aar between " & aarfra & " and " & aartil & " "

elseif aarfra <> "" and isnumeric(aarfra) then
  if len(sqlw) > 0 then
    sqlw = sqlw & " and "
  else
    sqlw = sqlw & " where "
  end if
  sqlw = sqlw & " aar >= " & aarfra & " "

elseif aartil <> "" and isnumeric(aartil) then
  if len(sqlw) > 0 then
    sqlw = sqlw & " and "
  else
    sqlw = sqlw & " where "
  end if
  sqlw = sqlw & " aar <= " & aartil & " "

end if

if Request.querystring("farve")&"" <> "" then
  if len(sqlw) > 0 then
    sqlw = sqlw & " and "
  else
    sqlw = sqlw & " where "
  end if
  sqlw = sqlw & " farve = '" & replace(Request.querystring("farve"),"'","''") & "' "
end if
sql = sql & sqlw & " order by navn desc"
Avatar billede softspot Forsker
02. december 2006 - 01:14 #61
Ja, jeg håber du kan få det placeret i koden, det begynder at blive lidt langhåret :)

Selv tak ;-)
Avatar billede olai Juniormester
02. december 2006 - 01:17 #62
Øh nu vil den hverken buh eller bøh:
<%
Set conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("db.mdb")
sqlw = ""
sql = "select * from heste "
if Request.querystring("koen")&"" <> "" then
  sqlw = " where koen = '" & replace(Request.querystring("koen"),"'","''") & "' "
end if

aarfra = Request.querystring("aarfra")&""
aartil = Request.querystring("aartil")&""
if aarfra <> "" and isnumeric(aarfra) and aartil <> "" and isnumeric(aartil) then
  if len(sqlw) > 0 then
    sqlw = sqlw & " and "
  else
    sqlw = sqlw & " where "
  end if
  sqlw = sqlw & " aar between " & aarfra & " and " & aartil & " "

elseif aarfra <> "" and isnumeric(aarfra) then
  if len(sqlw) > 0 then
    sqlw = sqlw & " and "
  else
    sqlw = sqlw & " where "
  end if
  sqlw = sqlw & " aar >= " & aarfra & " "

elseif aartil <> "" and isnumeric(aartil)
  if len(sqlw) > 0 then
    sqlw = sqlw & " and "
  else
    sqlw = sqlw & " where "
  end if
  sqlw = sqlw & " aar <= " & aartil & " "

end if

if Request.querystring("farve")&"" <> "" then
  if len(sqlw) > 0 then
    sqlw = sqlw & " and "
  else
    sqlw = sqlw & " where "
  end if
  sqlw = sqlw & " farve = '" & replace(Request.querystring("farve"),"'","''") & "' "
end if
sql = sql & sqlw & " order by navn desc"
Response.Write sql
Response.End
Set rs = Conn.Execute(sql)
%>



Jeg kan ikke engang lave
Response.Write sql
Response.End . . .
Avatar billede olai Juniormester
02. december 2006 - 01:19 #63
Hov prøver lige med den rettede kode.....
Avatar billede softspot Forsker
02. december 2006 - 01:19 #64
Kig lige i min kommentar fra 02/12-2006 01:13:25 og brug den kode i stedet for den du har pastet ind (jeg var lige lidt for hurtig til at sende den).
Avatar billede softspot Forsker
02. december 2006 - 01:19 #65
:)
Avatar billede olai Juniormester
02. december 2006 - 01:21 #66
For sørensen da hvor det virker!!!
Jeg er ovenud lykkelig nu, har kæmpet siden Torsdag eftermiddag for at finde en løsning...
Du skal have tusinde tak!!!!!
Og en god nat!
Avatar billede softspot Forsker
02. december 2006 - 01:23 #67
Tak i lige måde og velbekomme :)

Også tak for point :)
Avatar billede softspot Forsker
02. december 2006 - 01:25 #68
NB: Jeg ved ikke om du gennemskuede det, men man kan også søge på alder større end eller alder mindre end, dvs. man behøves ikke angive både fra og til alder...
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