Avatar billede oasen Nybegynder
21. maj 2002 - 01:38 Der er 11 kommentarer og
1 løsning

Array - udvælg fra database

Kan nogen umiddelbart sige, hvorfor der kun udskrives antal "mandage"?

Dim Liste, arrUgedage
Liste = "mandag, tirsdag, onsdag, torsdag, fredag, lørdag, søndag"
arrUgedage = Split(Liste,",")

For i = 0 To 6

    strSQL="SELECT count(Ugedag) AS antal FROM besoegtab where Ugedag = '" & arrUgedage(i) & "'"
    Set rs = Conn.execute(strSQL)
    Response.Write arrUgedage(i) & ": " & rs("antal") & "<br>"
    Set rs = Nothing
Next
Avatar billede tmceu Praktikant
21. maj 2002 - 01:59 #1
Koden kører perfekt og den genererede SQL er også OK, så fejlen må ligge i din database. Det virker som om du ikke har data på de øvrige dage.

Prøv at køre disse statements direkte i din database

SELECT count(Ugedag) AS antal FROM besoegtab where Ugedag = 'mandag'
SELECT count(Ugedag) AS antal FROM besoegtab where Ugedag = ' tirsdag'
SELECT count(Ugedag) AS antal FROM besoegtab where Ugedag = ' onsdag'
SELECT count(Ugedag) AS antal FROM besoegtab where Ugedag = ' torsdag'
SELECT count(Ugedag) AS antal FROM besoegtab where Ugedag = ' fredag'
SELECT count(Ugedag) AS antal FROM besoegtab where Ugedag = ' lørdag'
SELECT count(Ugedag) AS antal FROM besoegtab where Ugedag = ' søndag'
Avatar billede oasen Nybegynder
21. maj 2002 - 02:11 #2
Hmm...ja, så udskrives der stadig kun 0 ud for alle dage undtagen mandag. Det var dog mærkeligt!
Avatar billede tmceu Praktikant
21. maj 2002 - 02:13 #3
Du kan prøve denne, for at se hvad der findes i databasen

SELECT ugedag, count(*) FROM besoegtab GROUP BY ugedag

Den viser dig antal poster pr ugedag
Avatar billede oasen Nybegynder
21. maj 2002 - 02:14 #4
Ja, 2 sek...
Avatar billede oasen Nybegynder
21. maj 2002 - 02:19 #5
Hvad skal jeg udskrive?

strSQL="SELECT Ugedag, count(*) FROM besoegtab GROUP BY Ugedag"
Set rs = Conn.execute(strSQL)
Avatar billede tmceu Praktikant
21. maj 2002 - 02:22 #6
Du skal køre den direkte i databasen, bare for at teste hvad du har.

Men du kan også anvende den som erstatning for din arrayløsning, et øjeblik...
Avatar billede oasen Nybegynder
21. maj 2002 - 02:24 #7
Den kører fint, men jeg skal vel udskrive et eller andet...
Avatar billede tmceu Praktikant
21. maj 2002 - 02:26 #8
strSQL="SELECT Ugedag, count(*) AS Antal FROM besoegtab GROUP BY Ugedag"
Set rs = Conn.execute(strSQL)

If Not rs.EOF Then
Do Until rs.EOF
  Response.Write rs("Ugedag") & ": " & rs("Antal") & "<BR>"
  rs.movenext
Loop
End If

Fordelen er at du kun har ét hit på databasen, ulempen er at der ikke umiddelbart er nogen ordentlig sorteringsmulighed.
Avatar billede tmceu Praktikant
21. maj 2002 - 02:27 #9
Ja, den bør også køre fint. Men står der stadig 0 for alle andre dage end mandag ? I så fald, har du simpelthen ikke data for andre dage.
Avatar billede oasen Nybegynder
21. maj 2002 - 02:29 #10
Haha - problemet var ret banalt. Der må ikke være mellemrum i mit array. Dvs. det skal se sådan ud:

    Dim Liste, arrUgedage
    Liste = "mandag,tirsdag,onsdag,torsdag,fredag,lørdag,søndag"
    arrUgedage = Split(Liste,",")

Men det kan da være, din løsning er ligeså enkel.
Mange tak for hjælpen!
Avatar billede oasen Nybegynder
21. maj 2002 - 02:32 #11
Ja, jeg bruger din løsning, da der her kun skal laves en SQL. Det er langt bedre, især hvis jeg også skal til at optælle timer og minutter!

Tak igen :)
Avatar billede tmceu Praktikant
21. maj 2002 - 02:35 #12
Det var så lidt :-)
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