Set RS3 = Conn.Execute("SELECT COUNT(*) AS ID From annonser WHERE cat = " & cat &" AND typ = " & RS2("ID"))
------------------
essentitia preter non sans multiplicandum
12 svar · 180 visningar · startad av Holgersson
Vad är fel här..?
Som sagt kan jag inte mycket ASP.. ;)
På de sista tecknen får jag meddelandet "oavslutad strängkonstant":
Set RS3 = Conn.Execute("SELECT COUNT(*) AS ID From annonser WHERE cat = " & cat &" AND typ = " & RS2("ID")") <-- där
Förstår inte mycket.. :r
Set RS3 = Conn.Execute("SELECT COUNT(*) AS ID From annonser WHERE cat = " & cat &" AND typ = " & RS2("ID"))
------------------
essentitia preter non sans multiplicandum
Tackar, nu fungerar det.
Fast enda felet är att den skriver ut samma antal på allting.. Jag har tre kategorier som det ska skrivas ut antal annonser i, fast den skriver ut samma på alla.. Vad ska man skriva för att får ut innehållet ur Count-grejen? Är det <%=RS3("ID")%> eller nått annat? :r
Set RS3 = Conn.Execute("SELECT Kategori, COUNT(*) AS ID From annonser WHERE cat = " & cat &" AND typ = " & RS2("ID"))
while not RS3.eof
response.write RS3("Kategori") & " (" & RS3("ID") & ") <br>"
RS3.movenext
wend
Mvh Jörgen :)
[Redigerat av jorgen den 27 okt 2001]
Den där skriver alltså ut antalet annonser vid rätt typ..?
Eller..? :r
Hej!
Jag vet inte ifall ditt fält heter Kategori, om inte får du ändra det fältet.
Den skriver ut tex:
Bilar (5)
mvh Jörgen :)
------------------
Varför bråka när man kan kramas?
Njae, du får nog fel om du skriver så
Set RS3 = Conn.Execute("SELECT Kategori, COUNT(*) AS ID From annonser WHERE cat = " & cat &" AND typ = " & RS2("ID") & " group by kategori")
------------------
essentitia preter non sans multiplicandum
[Redigerat av LarsG den 27 okt 2001]
Tack för du är vaken LarsG, missade GROUP BY :r
mvh Jörgen :)
------------------
Varför bråka när man kan kramas?
Nu blir jag lite smått förvirrad (lär mig hela tiden..), fast ni kan få se hela koden.. Tanken är att först väljer man kategori (default.asp), sedan kommer man till denna sida och här väljer man typ (köpes, säljes etc.) och här ska alltså antalet annonser i varje typ skrivas ut.. ;)
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="& Server.MapPath("databas.mdb")
SQL = "SELECT * FROM kategorier where Id = " & Request.Querystring("cat")
Set RS = Conn.Execute(SQL)
SQL = "SELECT * FROM subkategorier"
Set RS2 = Conn.Execute(SQL)
cat = Request.Querystring("cat")
Set RS3 = Conn.Execute("SELECT COUNT(*) AS ID From annonser WHERE cat = " & cat &" AND typ = " & RS2("ID"))
%>
<html>
<head>
<title>-</title>
</head>
<body bgcolor="#ffffff" text="#000000" link="#FF0033" alink="#FF0033" vlink="#FF0033">
<br><br>
<table border="0" width="400" cellpadding="0" cellspacing="0" align="center">
<tr>
<td>
Du har valt kategorin <%=RS("kategori")%><br>
<br>
Välj typ av annonser som skall visas:
<br>
<% Do Until RS2.EOF %>
<a href="visa.asp?cat=<%=RS("ID")%>&typ=<%=RS2("ID")%>"><%=RS2("typ")%></a> (<% =RS3("ID") %> st. annonser..)<br>
<%
RS2.MoveNext
Loop
%>
</td>
</tr>
</table>
</body>
</html>
<%
RS.Close
RS2.Close
RS3.Close
Conn.Close
%>
Det finns säkert massor med fel, fast det funkar iaf fint tills nu när antalet skall skrivas ut på sidan..
Har jag fattat rätt om det inte finns någon koppling mellan kategori och subkategori?
<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="& Server.MapPath("databas.mdb")
cat = Request.Querystring("cat")
sql = "select s.id , s.typ, k.kategori, count(*) as antal " &_
" from kategorier as k, subkategorier as s, annonser as a " & _
" where k.id = " & cat & " and a.cat = k.id and a.typ = s.id " & _
" group by s.id,s.typ,k.kategori"
set rs = conn.execute(sql)
%>
<html>
<head>
<title>-</title>
</head>
<body bgcolor="#ffffff" text="#000000" link="#FF0033" alink="#FF0033" vlink="#FF0033">
<br><br>
<table border="0" width="400" cellpadding="0" cellspacing="0" align="center">
<tr>
<td>
Du har valt kategorin <%=RS("kategori")%><br>
<br>
Välj typ av annonser som skall visas:
<br>
<% Do Until RS.EOF %>
<a href="visa.asp?cat=<%=cat%>&typ=<%=RS("ID")%>"><%=RS("typ")%></a> (<% =RS("ANTAL") %> st. annonser..)<br>
<%
RS.MoveNext
Loop
%>
</td>
</tr>
</table>
</body>
</html>
<%
RS.Close
Conn.Close
%>
------------------
essentitia preter non sans multiplicandum
[Redigerat av LarsG den 27 okt 2001]
Det är så att den första (RS) kollar vilken kategori det handlar om från en egen tabell med kategorier, den andra (RS2) skriver ut vilka typer det finns ur en egen tabell, och den sista (RS3) ska räkna alla annonser ur ytterligare en tabell med alla annonser som har rätt kategori OCH typ. Som du nu har skrivit så kollas väl varken rätt kategori eller skriver ut typerna..? Fast jag sa heller aldrig att det var en tabell till varje sak. Det finns tre typer av annonser (köpes, säljes och bytes) och den första som skrivs ut är säljes sedan köpes och till sist bytes. I säljes finns fyra annonser, i köpes en och i bytes ingen. RS3 skriver ut rätt vid den första (säljes, fyra annonser) men sedan skrivs det ut fyra även vid de andra två. Varför? Det fungerar ju tydligen inte i loopen att den kollar de andra två typerna.. Nu vart det kanske lite mycket text här, men jag hoppas du förstår ungefär i alla fall.. :)
Då har jag förstått rätt.
Anledningen till att du får ut samma är att du bygger sql-satsen för rs3
en gång med det första typ-värdet. Om du vill att din lösning skall fungera så får du flytta in den i loopen.
<% Do Until RS2.EOF
Set RS3 = Conn.Execute("SELECT COUNT(*) AS ID From annonser WHERE cat = " & cat &" AND typ = " & RS2("ID")) %>
(men annars är det tänkt att min lösning skulle räkna annonser med rätt typ och kategori och skriva ut typen, jag kan ha missat något kolumnnamn.)
------------------
essentitia preter non sans multiplicandum
Tack så himla mycket!!
Nu fungerar det precis som det ska! ;)