Avatar billede loukas Mester
11. marts 2006 - 21:33 Der er 5 kommentarer og
1 løsning

Udskriv efter måned

Jeg har en tabel med ordrer:
OrdreNr
Kundeid
Dato
Status
BetalingsMetodeID
Sessid
PayValid

Jeg vil gerne have en oversigt således at data for hver enkelt måned bliver skrevet ud hver for sig.
Januar 20 ordrer
Februar 40 ordrer
Osv..
Avatar billede softspot Forsker
11. marts 2006 - 22:01 #1
Prøv evt. med flg. SQL-sætning:

SELECT COUNT(OrdreNr) AS AntalOrdrer, Month(dato) AS Maaned
FROM Ordrer
GROUP BY Month(dato)
Avatar billede softspot Forsker
11. marts 2006 - 22:16 #2
Du kan så lave noget VBS-kode som gennemløber listen og udskriver månederne og antallet af ordrer i hver måned. Noget i stil med dette:

strMdr = "Jan,Feb,Mar,Apr,Maj,Jun,Jul,Aug,Sep,Okt,Nov,Dec"
arrMdr = Split(strMdr,",")

sql = "SELECT COUNT(OrdreNr) AS AntalOrdrer, Month(dato) AS Maaned " & _
      "FROM Ordrer " & _
      "WHERE year(dato) = 2006 " & _
      "GROUP BY Month(dato)"
set rs = conn.Execute(sql)
for mdr = 0 to 11
  response.write arrMdr(mdr) & " "
  if not rs.eof then
    if rs("Maaned") = mdr+1 then
      response.write rs("AntalOrdrer")
      rs.movenext
    else
      response.write "0"
    end if
  else
    response.write "0"
  end if
  response.write "&nbsp;ordrer<br>"
next
rs.close


Eksemplet forventer at conn indeholder forbindelsen til din database. Resultatet vil være alle ordrer i 2006, hvis du vil have ordrer for andre år, skal du ændre årstallet i WHERE-delen.
Avatar billede loukas Mester
11. marts 2006 - 22:41 #3
OK, meget fornemt :-)
Som du kan se er der en kolonne:status
Der kan stå Gennemført eller Annuleret
Så ville det være perfekt hvis det kunne komme ud sådan her:
Januar 20 ordrer - 18 Gennemført - 2 Annuleret
Februar 40 ordrer - 38 Gennemført - 2 Annuleret
Osv..
Avatar billede softspot Forsker
11. marts 2006 - 23:29 #4
Jeg er ikke helt sikker på om Access (hvis det er altså er den database du benytter) kan klare dette, men jeg ville da løse det med en subquery (ved godt det ikke performer super, men siden det max er 12 rækker der skal trækkes ud, går det nok).

Det kunne tage sig ud noget i stil med dette:

strMdr = "Jan,Feb,Mar,Apr,Maj,Jun,Jul,Aug,Sep,Okt,Nov,Dec"
arrMdr = Split(strMdr,",")

sql = "SELECT COUNT(OrdreNr) AS AntalOrdrer, Month(dato) AS Maaned, " & _
      "(SELECT COUNT(OrdreNr) FROM Ordrer AS o1 WHERE Month(o.dato) = Month(o1.dato) AND Status = 'Gennemført') AS Gennemfoert " & _
      "FROM Ordrer AS o " & _
      "WHERE year(dato) = 2006 " & _
      "GROUP BY Month(dato)"
set rs = conn.Execute(sql)
for mdr = 0 to 11
  response.write arrMdr(mdr) & "&nbsp;"
  if not rs.eof then
    if rs("Maaned") = mdr+1 then
      response.write rs("AntalOrdrer")
      response.write " - " & rs("Gennemfoert") & " Gennemført"
      response.write " - " & (rs("AntalOrdrer") - rs("Gennemfoert")) & " Annulleret"
      rs.movenext
    else
      response.write "0"
    end if
  else
    response.write "0"
  end if
  response.write " ordrer<br>"
next
rs.close
Avatar billede softspot Forsker
11. marts 2006 - 23:31 #5
Ups! Ordet "ordrer" skal lige smides ind i linien, hvis der er nogle ordrer i en måned:

strMdr = "Jan,Feb,Mar,Apr,Maj,Jun,Jul,Aug,Sep,Okt,Nov,Dec"
arrMdr = Split(strMdr,",")

sql = "SELECT COUNT(OrdreNr) AS AntalOrdrer, Month(dato) AS Maaned, " & _
      "(SELECT COUNT(OrdreNr) FROM Ordrer AS o1 WHERE Month(o.dato) = Month(o1.dato) AND Status = 'Gennemført') AS Gennemfoert " & _
      "FROM Ordrer AS o " & _
      "WHERE year(dato) = 2006 " & _
      "GROUP BY Month(dato)"
set rs = conn.Execute(sql)
for mdr = 0 to 11
  response.write arrMdr(mdr) & "&nbsp;"
  if not rs.eof then
    if rs("Maaned") = mdr+1 then
      response.write rs("AntalOrdrer")
      response.write " ordrer"
      response.write " - " & rs("Gennemfoert") & " Gennemført"
      response.write " - " & (rs("AntalOrdrer") - rs("Gennemfoert")) & " Annulleret<br>"
      rs.movenext
    else
      response.write "0 ordrer<br>"
    end if
  else
    response.write "0 ordrer<br>"
  end if
next
rs.close
Avatar billede loukas Mester
20. marts 2013 - 17:15 #6
lukker
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