jag har en databas där jag sparar ner antal besök på en sida.
det som sparas ned är:
ip och datum
datumet är fullständigt format (2001-04-14 18:20:22)
och nu är det då såhär att jag ska ta fram statistik på varje dag hur många besök det vart.. då vill jag på nå vis trimma ut och få fram varje datum 1 gång.. dvs om det går att trimma bort tiden i datumet då kan jag ju köra en distinct och sen räkna hur många det är på den dagen och på så vis få endast 1 post per dag med antal bredvid annars rabblar den ju varje post.
koden ser ut som följer:
SQLStmt = "SELECT Distinct (datumreg) FROM counters ORDER BY datumreg DESC"
Set RS = Connection.Execute(SQLStmt)
Do until RS.EOF
datum = RS("datumreg")
datumet = "'" & datum & "'"
Set anvands = Connection.Execute("Select Count(*) AS antalet FROM counters WHERE datumreg = "& datumet &" ")
antal = anvands("antalet")
Alltså den skriver såhär med denna kod jag visade:
2001-04-20 10:21:57 Antal: 1
2001-04-20 09:58:08 Antal: 1
2001-04-20 09:54:32 Antal: 1
2001-04-20 09:53:22 Antal: 1
2001-04-20 09:52:44 Antal: 1
Jag vill att den skall skriva
2001-04-20 Antal: 5
så det bör ju vara den övre satsen man skall göra något med väl?
okej, vild chansning
möjligt att datumet måste vara av typen text?
SQLStmt = "SELECT Distinct (datumreg) FROM counters ORDER BY datumreg DESC"
Set RS = Connection.Execute(SQLStmt)
Do until RS.EOF
datum = Left(RS("datumreg"),10)
Set anvands = Connection.Execute("SELECT Count(*) AS antalet FROM counters WHERE datumreg [b]LIKE '"& datum &"%'[/b]")
antal = anvands("antalet")
hehe, kanske e helt fel - vet inte om man kan göra så, men testa
dock måste fältet vara av datatypen varchar eller text för att man skall kunna använda like. jag föreslår följande (fast kör = istället).
SQLStmt = "SELECT Distinct CONVERT(VARCHAR(10),datumreg) AS datumreg FROM counters ORDER BY datumreg DESC"
Set RS = Connection.Execute(SQLStmt)
Do until RS.EOF
datum = Left(RS("datumreg"),10)
Set anvands = Connection.Execute("SELECT Count(*) AS antalet FROM counters WHERE [b]CONVERT(VARCHAR(10),datumreg) = '"& datum &"'[/b]")
antal = anvands("antalet")
redigering: kanske skulle ha lite med i första selecten också...
redigering 2: jag är inte helt säker på att det där funkar, men kanske? har inte testat det...
SQL = "SELECT datumreg FROM counters GROUP BY datumreg ORDER BY datumreg ASC"
set RS = Connection.Execute(SQL)
Do Until RS.EOF
'Hämta antal träffar via en SQL-sträng här...
Response.Write RS("datumreg") & "--> " & newRS("cntAntal") & "<br>"
RS.MoveNext
Loop
Borde funka som du vill... Om jag förstår dej rätt
[redigerat]
Japp, ett fält med bara datum vore bra, annars listas alla poster där klockslaget inte är samma med min metod...
[/redigerat]
ne, men i din kod försökte du köra like mot ett datetime-fält, jag pekade mest på att i så fall, så måste du göra en konvertering i sql-frågan, som den jag gjorde, även om jag valde att använda =.
SQLStmt = "SELECT Distinct CONVERT(VARCHAR(10),datumreg) FROM counters"
Set RS = Connection.Execute(SQLStmt)
%>
<table border="0">
<%
Do until RS.EOF
datum = Left(RS("datumreg"),10)
datumet = "'" & datum & "'"
Set anvands = Connection.Execute("Select Count(*) AS antalet FROM counters WHERE CONVERT(VARCHAR(10),datumreg) = "& datumet &" ")
antal = anvands("antalet")
%>
<tr>
<td><%=datum%> Antal: <%=antal%></td>
</tr>
<%
RS.Movenext
Loop
%>
</table>
<%
RS.Close
anvands.close
Connection.Close
%>
och jag får följande fel:
ADODB.Fields error '800a0cc1'
ADO could not find the object in the collection corresponding to the name or ordinal reference requested by the application.
/statistik.asp, line 26
och rad 26 är den där count raden och om jag inaktiverar allt det där med att räkna så visas bara "Antal:" och inget mer på sidan