Avatar billede mvk Nybegynder
18. juli 2005 - 10:25 Der er 11 kommentarer og
1 løsning

samle data efter måned

jeg har en række records som oprettes med en dato. hvordan kan jeg samle dem så jeg kan vise udviklingen per måned. (der er også en kolonne med beløb for hver post som jeg også gerne vil samle per måned, samt vise antal records for den pågældende måned)

jeg bruger ms sql og felterne har datatypen datatime

håber der er nogen som kan hjælpe. det virker måske lidt tricky
Avatar billede mvk Nybegynder
18. juli 2005 - 10:32 #1
mit recordsæt per pt sådan ud:

<%
Session.LCID= 1033
Function ConvertToSqlDate(dato)
dim SQLYear,SQLMonth,SQLDay
SQLYear = Year(dato)
SQLMonth = Month(dato)
SQLDay = Day(dato)
if SQLDay<10 then
  SQLDay = 0&SQLDay
end if
if SQLMonth<10 then
  SQLMonth = 0&SQLMonth
end if
ConvertToSqlDate = SQLMonth&"-"&SQLDay&"-"&SQLYear
End Function
%>
<%
Dim rsClaims
Dim rsClaims_numRows

Set rsClaims = Server.CreateObject("ADODB.Recordset")
rsClaims.ActiveConnection = MM_claims_conn_STRING
rsClaims.Source = "SELECT *  FROM dbo.tblClaims  WHERE (DateOfDamage between '" & ConvertToSqlDate(Request.Form("startdate")) & "' and '" & ConvertToSqlDate(Request.Form("enddate")) & "') order by routeplaceID asc"
rsClaims.CursorType = 0
rsClaims.CursorLocation = 2
rsClaims.LockType = 1
rsClaims.Open()

rsClaims_numRows = 0
%>
Avatar billede fennec Nybegynder
18. juli 2005 - 10:38 #2
Hvad mener du med at "samle dem"??
Som jeg kan se det burde dit script hente alle resultater inden for "startdate" og "enddate", så hvis det bare er den første og sidste dag i måneden får du alle de resultater.
Avatar billede mvk Nybegynder
18. juli 2005 - 10:44 #3
jeg vil gerne samle dem per måned. så hvis jeg søger på 01-01-2005 til 31-07-2005 så samler dem resulateterne og opstiller dem for januar, februar osv.
Avatar billede fennec Nybegynder
18. juli 2005 - 10:51 #4
Så skal du have ændret din "order by" til at køre på datoen, så resultaterne er sorteret herefter og ikke efter routeplaceID (kan være sekundær sortering)

Dernæst skal du tjekke hvilken måned resultater er i og sammenligne det med forige resultat:

oldMonth = 0
while not rsClaims.eof
  if oldMonth <> month(rsClaims("DateOfDamage")) then
    response.write monthname(month(rsClaims("DateOfDamage"))) &"<br>"
  end if
  response.write rsClaims("nogetData") & "<br>"
  oldMonth = month(rsClaims("DateOfDamage"))
  rsClaims.MoveNext
wend
Avatar billede mvk Nybegynder
18. juli 2005 - 12:34 #5
det ser ud til at virke :)

i stedet for at vise: response.write rsClaims("IDclaim") & "<br>"
kunne jeg så bare tælle dem sammen så i stedet for at vise hver id viser jeg bare hvor mange der er ?
Avatar billede fennec Nybegynder
18. juli 2005 - 12:39 #6
Skal du bare vise hvor mange der er i hver måned, for så kan du bruge COUNT() funktionen i sql sammen med "GROUP BY".
Avatar billede fennec Nybegynder
18. juli 2005 - 12:44 #7
Noget i denne stil:

rsClaims.Source = "select count(IDclaim) as antal, year(DateOfDamage) as thisYear, month(DateOfDamage) as thisMonth FROM dbo.tblClaims  WHERE (DateOfDamage between '" & ConvertToSqlDate(Request.Form("startdate")) & "' and '" & ConvertToSqlDate(Request.Form("enddate")) & "') group by year(DateOfDamage), month(DateOfDamage) order by year(DateOfDamage), month(DateOfDamage) "
...
while not rsClaims.eof
  response.write monthname(rsClaims("thisMonth")) &"<br>"
  response.write rsClaims("antal") &"<br>"
  rsClaims.moveNext
wend
Avatar billede mvk Nybegynder
18. juli 2005 - 12:55 #8
når jeg prøver at udskive: response.write year(rsClaims("thisYear"))
skriver den 1905 selvom jeg ved det er 2005 ?
Avatar billede fennec Nybegynder
18. juli 2005 - 12:58 #9
Du skal ikke have year() funktionen omkring rsClaims("thisYear"). Det er allerede årstallet (lavet gennem SQL), så du skal bare udskrive rsClaims("thisYear").
Avatar billede fennec Nybegynder
19. juli 2005 - 09:04 #10
Skriver den året rigtigt ud nu??
Avatar billede mvk Nybegynder
19. juli 2005 - 21:47 #11
checker i morgen... get2net er nede så jeg har ikke kunne komme online - æv
Avatar billede mvk Nybegynder
23. august 2005 - 07:18 #12
thanks fennec!
må du meget undskylde den svar tilbagemelding
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