Avatar billede peterfup Nybegynder
28. oktober 2003 - 12:58 Der er 13 kommentarer og
2 løsninger

Sortering i datoorden

Hejza...

Jeg har brug for en sortering af nogle objekter.

Her er lidt kode...

var contacts = new Array();

    while(!rs.eof)
                {
                    contact = new Object();
                    contact.id=String(rs.fields.item("id"));
                    contact.company=String(rs.fields.item("company"));
                    contact.followUpDate=String(rs.fields.item("followUpDate"));
                    contact.name=String(rs.fields.item("name"));
                    contacts[x] = contact;
                    rs.move(1);
                    x++;
                }

Attributten followUpDate er en String i formatet: dd.mm.åå f.eks. 28.10.03 eller 01.11.03.

Jeg skal have et array til sidst hvor objekterne er sorteret i datoorden.

/PeterFup
Avatar billede hossein Nybegynder
28. oktober 2003 - 13:05 #1
kan du ikke bruge "... order by followUpDate" i din sql sætning?
Avatar billede peterfup Nybegynder
28. oktober 2003 - 13:07 #2
Nej, det er text i db'en så den vil ikke sortere rigtig - kun hvis alle ligger i samme måned og år...

Man skal ind og løbe array'et igennem og sortere dem manuelt!
Avatar billede Slettet bruger
28. oktober 2003 - 13:09 #3
hvad med ORDER BY CDate(followUpDate) ?
Avatar billede nielle Nybegynder
28. oktober 2003 - 13:09 #4
Den smarteste løsning ville være at definere din followUpDate som en DATE i stedet for en VARCHAR(...). I dette tilfælde kunne du nemlig bruge "... order by followUpDate" som hossein forslår.
Avatar billede Slettet bruger
28. oktober 2003 - 13:09 #5
men hvorfor har du datoer liggende i text i db'en ? det er da ret uhensigtsmæssigt imo..
Avatar billede nielle Nybegynder
28. oktober 2003 - 13:10 #6
ezolu -> Jeg er ret sikker på at databasen ikke kan forstå ASP.
Avatar billede Slettet bruger
28. oktober 2003 - 13:12 #7
nielle > Hvis det er en Access db (hvad det jo ofte er), så kan den godt :)
Avatar billede hossein Nybegynder
28. oktober 2003 - 13:14 #8
Hvad er det for en db? msAccess. det nemmeste er at tage en kopi af hele kolonen og bagefter sætte ind i anden kolone med den rette datatype.
Avatar billede peterfup Nybegynder
28. oktober 2003 - 13:18 #9
Datoerne ligger som text i db'en da jeg altid får problemer med datoer (godt nok kun i java's f...... gregorian calendar, men derefter har jeg altid brugt strings).

Ja, det er en access db.

ezolu -> den sorterer som om det var en String. Dvs. den 01.12.03 kommer før 10.11.03.

Tror ikke at der kan sorteres fra databasen, men at det skal gøres manuelt.
Der kommer ikke så mange objekter, så det bliver aldrig en kæmpe søgning.
Avatar billede Slettet bruger
28. oktober 2003 - 13:24 #10
peterfup > Jeg har også haft problemer med Java og access' datoformat, men når du bruger den i ASP, er det altså helt go'nat ikke at bruge det :)

Men hvis du insisterer, så kig en gang på http://www.magik.dk/da/articles/8/

har du prøvet med Cdate() funktionen?
Avatar billede peterfup Nybegynder
28. oktober 2003 - 13:48 #11
Cdate sorterer som en string...

Jeg bliver nødt til at beholde min string da der allerede er data i systemet.
Avatar billede hossein Nybegynder
28. oktober 2003 - 13:59 #12
Prøv med Datevalue funktionen:

<% minDato = "26-10-2003" %>
<% =DateValue(minDato) %>

Output:
26-10-2003
Avatar billede peterfup Nybegynder
29. oktober 2003 - 10:44 #13
Datoen skal være i formatet dd.mm.åå så jeg kan ikke bruge bindestreger...

Er der slet ikk nogen som vil lave en lille sortering eller ska jeg selv til det..?
Avatar billede hossein Nybegynder
31. oktober 2003 - 09:53 #14
Hvis du laver en query i selve msAccess design, så kan du convertere fra tekst datatype til datatypen Dato og klokkesæt og sortere efter den, fx:

SELECT tblMin.TekstDato, cdate(tekstdato) AS FinalDato FROM tblMin ORDER BY 2
Avatar billede peterfup Nybegynder
19. februar 2004 - 12:32 #15
Nå, må hellere lukke det her spørgsmål...

Jeg fik aldrig lavet min søgefunktion, men skal opdatere (ja, eller lave et nyt) systemet til asp.net, så har droppet det.

Selvom jeg ikke fik et svar deler jeg pointene ud da løsningerne her sagtens kan bruges i andre tilfælde.

/PeterFup
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