Avatar billede clausn Nybegynder
10. november 2002 - 16:33 Der er 6 kommentarer og
1 løsning

Optimering af db kald (Access DB)

Hejsa,

Har lige fået følg. kode, men det er dræbende langsom (lidt over 8 sek at udføre)

strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\www\www.mitdomæne.x\db\database.mdb"

for num = 0 to 11
    dtmMonth = Month(DateAdd("m", -num, Now()))
    dtmMonthName = MonthName(dtmMonth)
    dtmYear = Year(DateAdd("m", -num, Now()))
    Response.Write dtmMonthName & " " & dtmYear & ":<br/>"

    Set rs = Server.CreateObject("ADODB.RecordSet")
    strSQL = "SELECT Count(ID) AS Total FROM Userstats WHERE DatePart('yyyy',[Dato]) = " & dtmYear & " AND DatePart('m',[Dato]) = " & dtmMonth  & ";"
    rs.Open(strSQL), strConnect, 1
    Response.write rs("Total") & "<br/><br/>"
next

Er der nogen der har en ide om man kan lave dette i et db kald eller en anden metode der kan gøre det hurtigere...?

Hilsen
Claus
Avatar billede clausn Nybegynder
10. november 2002 - 16:34 #1
En lille tilføjelse: Det skal udskrive en liste over antal hits det sidste år, så det hjælper ikke at at fjerne for ... next...
Avatar billede eagleeye Praktikant
10. november 2002 - 17:29 #2
Kan man ikke lave det i en SQL sætning hvis man laver GROUP BY

strSQL = "SELECT Count(ID) AS Total FROM Userstats GROUP BY DatePart('m',[Dato]) ORDER BY DatePart('yyyy',[Dato]) DESC, DatePart('m',[Dato]) DESC"
Avatar billede clausn Nybegynder
10. november 2002 - 17:32 #3
Får denne fejl:
Microsoft JET Database Engine error '80040e21'
You tried to execute a query that does not include the specified expression 'DatePart('yyyy',[Dato])' as part of an aggregate function.
Avatar billede eagleeye Praktikant
10. november 2002 - 17:35 #4
strSQL = "SELECT Count(ID) AS Total, DatePart('yyyy',[Dato]) as aar, DatePart('m',[Dato]) as maanede  FROM Userstats GROUP BY DatePart('m',[Dato]) ORDER BY DatePart('yyyy',[Dato]) DESC, DatePart('m',[Dato]) DESC"
Avatar billede eagleeye Praktikant
10. november 2002 - 17:42 #5
Prøv med denne SQL:


strSQL = "SELECT Top 12 Count(ID) AS Total, Year(Dato) as aar, Month(Dato) as maanede FROM Userstats GROUP BY Year(Dato), Month(Dato) ORDER BY Year(Dato) DESC,  Month(Dato) DESC;"

rs.Open(strSQL), strConnect, 1
do while not rs.EOF

Response.Write MonthName(rs("maanede")) & " " & rs("aar") & ":<br/>"
Response.write rs("Total") & "<br/><br/>"
rs.Movenext
loop
Avatar billede clausn Nybegynder
10. november 2002 - 17:49 #6
Sejt - tak!
Laver du ikke et svar eagleeye?
Avatar billede eagleeye Praktikant
10. november 2002 - 17:51 #7
Ok. :)
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