datum = Left(RS("datumreg"),10)
------------------
"I have to return some video tapes" - Patrick Bateman, American Psycho
21 svar · 390 visningar · startad av brw
halo..
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")
------------------
Ingenting är omöjligt, bara en utmaning.
datum = Left(RS("datumreg"),10)
------------------
"I have to return some video tapes" - Patrick Bateman, American Psycho
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?
------------------
Ingenting är omöjligt, bara en utmaning.
Kan du inte använda funktionen date i dit SQLuttryck?
Distinct(Date(datumreg))
------------------
Budweiser - Slightly contaminated water... probably harmless, but I would recommend boiling before you drink it...
webEye.nu SweQuake.com
Då får jag följande:
Date is not a recognized function name.
Jag har SQL-databas så det borde väl fungera?
------------------
Ingenting är omöjligt, bara en utmaning.
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 :)
------------------
void[]
stash/$gu&-public(querystring)/n int{}bind "2" "say i own!" :)
så kan man göra. nästan. :)
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...
mvh,
------------------
<A HREF="http://cartman.nu" TARGET=_blank>
all your base are belong to us!</A>
[Redigerat av @nders den 20 apr 2001]
[Redigerat av @nders den 20 apr 2001]
möjligt att datumet måste vara av typen text
dock måste fältet vara av datatypen varchar eller text för att man skall kunna använda like.
*host* ekar de här eller? :e
------------------
void[]
stash/$gu&-public(querystring)/n int{}bind "2" "say i own!" :)
hmm fan det där funkar inte.. den visar inget då..
det enklaste kanske vore om jag la till ett fält till i tabellen som bara innehåller datum utan tid. då är det ju löst eller vad säger ni?
det borde väl fungera såhär som ni beskriver oxå?
------------------
Ingenting är omöjligt, bara en utmaning.
Hmm... Varför krångla till det så mycket? :q
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]
------------------
SPiN, bjorne.w@telia.com
-- §e Grr... --
[Redigerat av SPiN den 20 apr 2001]
[Redigerat av SPiN den 20 apr 2001]
annars listas alla poster där klockslaget inte är samma med min metod
...och det är väl det som är grundproblemet :q
------------------
<A HREF="http://cartman.nu" TARGET=_blank>
all your base are belong to us!</A>
hehe... illa spin :e
brw: testat både mitt och @nders förslag? felmeddelanden? resulat?
------------------
void[]
stash/$gu&-public(querystring)/n int{}bind "2" "say i own!" :)
Ojdå... :r
Kollade för lite på problemet... Kommer inte hända igen :e
------------------
SPiN, bjorne.w@telia.com
-- §e Grr... --
[Redigerat av SPiN den 20 apr 2001]
nakoz:
*host* ekar de här eller?
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 =.
------------------
<A HREF="http://cartman.nu" TARGET=_blank>
all your base are belong to us!</A>
men jag skrev ju att de kanske skulle va av datatypen text :)
aja, grattis till ditt 4000:de inlägg iaf http://www.webforum.nu/ssi/smilies/bire.gif
[redigering]
hmm, inga bilder här? aja, klicka på länken :)
[/redigering]
------------------
void[]
stash/$gu&-public(querystring)/n int{}bind "2" "say i own!" :)
[Redigerat av nakoz den 20 apr 2001]
nu ser det ut såhär:
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
fel.. det är 26 som är Do until RS.eof
------------------
Ingenting är omöjligt, bara en utmaning.
[Redigerat av brw den 20 apr 2001]
vad har din datum-kolumn för datatyp?
------------------
void[]
stash/$gu&-public(querystring)/n int{}bind "2" "say i own!" :)
om du testar byta till text/varchar och testar min kod sen så får vi se :)
------------------
void[]
stash/$gu&-public(querystring)/n int{}bind "2" "say i own!" :)