Hej. Månad: Tack för snabbt svar. Testa med DatePart-funktionen Varför använder du mer än ett recordset? Jag ser det som ineffektivt och kommer belasta din server onödigt mycket. Du bör istället återanvända ett recordset och istället lagra resultatet i variabler. STORT TACK Anders! Bar kul att hjälpa till. Dag, Måndag, Vecka, Totalt i Access
Jag skulle behöva hjälp med ett anropp till en Accessdatabas. Jag sparar besökstatistik i en tabell. Nu önskar jag visa en sammanställning uppdelat på dag, vecka, månad och totalt. Jag har löst dag och toalt. Vet ej hur man får fram enbart poster för aktuell vecka och månad.
Tabellen har två fält. Datum och Antal. När första besökaren kommer till sidan så läggs dagens datum till. Sedan plusas antals-fältet på för varje ny besökare. En session håller reda på att besökaren redan har räknats.
Tabellen ser ut på följande sätt.
DATUM ANTAL
040608 23
040609 31
040610 47
set rsDag = dbStatistik.execute ("select sum(Antal) as iDag from Statistik where Datum = #" & Date & "#")
set rsTotalt = dbStatistik.execute ("select sum(Antal) as iTotalt from Statistik")Sv: Dag, Måndag, Vecka, Totalt i Access
select Year(DATUM) & Month(Datum) AS Manad, sum(Antal) as Antal from Statistik GROUP BY Year(DATUM) & Month(Datum)
Vecka (tror detta ska fungera):
select Format(Datum,"yyyy ww") AS Vecka, sum(Antal) as Antal from Statistik GROUP BY Format(Datum,"yyyy ww")
/JohanSv: Dag, Måndag, Vecka, Totalt i Access
Nu har jag löst månad också
set rsManad = dbStatistik.execute ("select sum(Antal) as iManad from Statistik where month(Datum) = " & month(Date) & "")
Jag fick inte koden för vecka att fungera!
johan.seSv: Dag, Måndag, Vecka, Totalt i Access
select DatePart('ww', datum, 1) AS Vecka, sum(Antal) as Antal from Statistik GROUP BY DatePart('ww', datum, 1) Sv: Dag, Måndag, Vecka, Totalt i Access
<code>
Function FirstDayOfWeek(Value)
Dim dow
dow = Weekday(Value, vbMonday)
If dow Then
FirstDayOfWeek = DateAdd("d", 1 - dow, Value)
Else
FirstDayOfWeek = Value
End If
End Function
Dim rs
Dim dbStatistik
Dim strSQL
Dim FirstDate
Dim LastDate
Dim lngToday
Dim lngThisWeek
Dim lngThisMonth
Dim lngThisYear
Dim lngTotal
Set dbStatistik = Server.CreateObject("ADODB.Connection")
dbStatistik.Open ">>>Din anslutningssträng<<<"
Set rs = Server.CreateObject("ADODB.Recordset")
'**
'* Idag
'**
strSQL = "SELECT Sum(Antal) AS Antal" & vbCrLf & _
"FROM Statistik" & vbCrLf & _
"WHERE Datum = #" & Date & "#"
rs.Open strSQL, dbStatistik
lngToday = rs("Antal")
rs.Close
'**
'* Denna veckan
'**
FirstDate = FirstDayOfWeek(Date)
LastDate = DateAdd("d", 7, FirstDate)
strSQL = "SELECT Sum(Antal) AS Antal" & vbCrLf & _
"FROM Statistik" & vbCrLf & _
"WHERE Datum >= #" & FirstDate & "# AND Datum < #" & LastDate & "#"
rs.Open strSQL, dbStatistik
lngThisWeek = rs("Antal")
rs.Close
'**
'* Denna månad
'**
FirstDate = DateSerial(Year(Date), Month(Date), 1)
LastDate = DateAdd("m", 1, FirstDate)
strSQL = "SELECT Sum(Antal) AS Antal" & vbCrLf & _
"FROM Statistik" & vbCrLf & _
"WHERE Datum >= #" & FirstDate & "# AND Datum < #" & LastDate & "#"
rs.Open strSQL, dbStatistik
lngThisMonth = rs("Antal")
rs.Close
'**
'* Detta året
'**
FirstDate = DateSerial(Year(Date), 1, 1)
strSQL = "SELECT Sum(Antal) AS Antal" & vbCrLf & _
"FROM Statistik" & vbCrLf & _
"WHERE Datum >= #" & FirstDate & "#"
rs.Open strSQL, dbStatistik
lngThisMonth = rs("Antal")
rs.Close
'**
'* Detta året
'**
FirstDate = DateSerial(Year(Date), 1, 1)
strSQL = "SELECT Sum(Antal) AS Antal" & vbCrLf & _
"FROM Statistik" & vbCrLf & _
"WHERE Datum >= #" & FirstDate & "#"
rs.Open strSQL, dbStatistik
lngThisYear = rs("Antal")
rs.Close
'**
'* Totalt
'**
strSQL = "SELECT Sum(Antal) AS Antal" & vbCrLf & _
"FROM Statistik"
rs.Open strSQL, dbStatistik
lngTotal = rs("Antal")
rs.Close
Set rs = Nothing
dbStatistik.Close
Set dbStatistik = Nothing
</code>
Detta är ett mycket effektivt sätt att hämta informationen då du sliper funktionsanrop i frågan och får möjlighet att använda index på kolumnen.Sv: Dag, Måndag, Vecka, Totalt i Access
Din kod löste allt. Det var allt bra avancerat. Så jag förstod inte så mycket, men rätt blev det!!
Resultatet ser du här.
http://www.naturen.nu/statistik_visa.asp?id_sida=107
Hälsning
Johan.seSv: Dag, Måndag, Vecka, Totalt i Access
Koden är i sig mycket enkelt. Men är däremot basserad på på storkunskap om hur man bör programmera.
Förslag på titlar:
<code>
<table>
<tr>
<td>Idag (<%=Date%>)</td>
<td><%=lngToday%></td>
</tr>
<tr>
<td>Denna veckan (V<%=Datepart("ww", date, vbUseSystemDayOfWeek, vbUseSystem)%>)</td>
<td><%=lngThisWeek%></td>
</tr>
<tr>
<td>Denna månaden (<%=MonthName(Month(Date))%>)</td>
<td><%=lngThisMonth%></td>
</tr>
<tr>
<td>Detta åretet (<%=Year(Date)%>)</td>
<td><%=lngThisYear%></td>
</tr>
<tr>
<td>Totalt</td>
<td><%=lngTotal%></td>
</tr>
</table>
</code>