Avatar billede george Nybegynder
01. maj 2006 - 22:23 Der er 12 kommentarer og
1 løsning

Hvordan får jeg sorteret efter måneden i datoen

Jeg har en kode der sorterer datoen således:

Før sortering.
13.12
10.08
20.07
06.10

Efter sortering.
06.10
10.08
13.12
20.07

Altså sorteret efter dagen og ikke efter måneden. Hvordan får jeg den til at sortere efter måneden ?

Her er koden der gør som beskrevet ovenfor:
        'Create object for the recordset
        Set rs = Server.CreateObject("ADODB.RecordSet")

        'Create DSN connection
        strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("log/vl10.mdb")

        ' Opbygning af SQL streng
        strSQL = "SELECT * FROM Vaertskaber Where Aar =" & "'" & iAar & "'"
        'Response.Write(strSQL)
           
        'Open DB
        rs.Open strSQL, strDSN, 1
       
        'Make a loop finding the number of dates
        i = 0
        redim iDate(0)
        do while not rs.eof 'Looping rows
            iString = rs("Date")
            Response.Write iString & "<br>"         
            If iString <> "" Then
                i = i + 1
            redim preserve iDate(i)
            iDate(i-1)=iString
            End If
            rs.MoveNext
        Loop

        ShellSort iDate

        Max = ubound(iDate)
        'Response.Write Max & "<br>"
     
        For i = 0 to Max
            Response.Write iDate(i) & "<br>"
        Next
       
        rs.close()
        Set rs = Nothing
Avatar billede nielle Nybegynder
01. maj 2006 - 22:28 #1
strSQL = "SELECT * FROM Vaertskaber Where Aar =" & "'" & iAar & "' ORDER BY Maaned"
Avatar billede softspot Forsker
01. maj 2006 - 22:29 #2
Du kan benytte Month-funktionen i databasen:

strSQL = "SELECT * FROM Vaertskaber Where Aar = '" & iAar & "' ORDER BY MONTH(date)"

jeg kan ikke lige gennemskue hvad du gør i resten af loopet, men hvis det er sortering, så kan du måske undvære det... :)
Avatar billede softspot Forsker
01. maj 2006 - 22:30 #3
UPS! Date er jo reserveret i databasen, så du skal lige ændre din SQL til:

strSQL = "SELECT * FROM Vaertskaber Where Aar = '" & iAar & "' ORDER BY MONTH([date])"
Avatar billede nielle Nybegynder
01. maj 2006 - 22:34 #4
Ahh, jeg kan se at du putter dit aray igennem en sortering:

    ShellSort iDate

Men hvorfor gør du egentlig dety, når du istedet kan sortere direkte i SQL-kaldet?
Avatar billede george Nybegynder
01. maj 2006 - 22:55 #5
Jeg kan ikke gøre det i db'en udtrækket. "13.12" er ikke et "dato" felt, men
et tekstfelt.
Avatar billede george Nybegynder
01. maj 2006 - 22:56 #6
Så det er noget med Split tror jeg uden at vide det med sikkerhed og så samle det igen efter sortering.
Avatar billede softspot Forsker
01. maj 2006 - 22:59 #7
Samme opskrift som før, bare med en anden funktion :)

strSQL = "SELECT * FROM Vaertskaber Where Aar = '" & iAar & "' ORDER BY RIGHT([date],2)"
Avatar billede george Nybegynder
01. maj 2006 - 23:02 #8
softspot >> Det er ikke et datofelt i db'en, kun et tekstfelt hvor der eksempelvis 13.12
Avatar billede softspot Forsker
01. maj 2006 - 23:05 #9
...og det er derfor jeg foreslår at du bruger strengfunktionen RIGHT for at finde de to sidste tegn i det tekstfelt der indeholder datoen... :)
Avatar billede nielle Nybegynder
01. maj 2006 - 23:09 #10
Og jeg vil så til gengæld foreslå at du laver om på din tabel - at du laver det om til et rigtigt date-felt. På den måde får du løsningen serveret på et sølvfad (og dit program bliver meget hurtigere).
Avatar billede george Nybegynder
02. maj 2006 - 10:30 #11
softspot >> Det virker.

Nielle >> Ja jeg ved det godt, men det skulle jo være lavet fra starten.

Svar = Points
Avatar billede softspot Forsker
02. maj 2006 - 10:35 #12
Kommer der - velbekomme :)
Avatar billede softspot Forsker
02. maj 2006 - 22:07 #13
Tak for point :)
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