25. december 2004 - 04:30Der er
22 kommentarer og 1 løsning
split dato og sorter
Hej E (IIS 5.0 / Access / ASP /IE)
Jeg har søgt på E og fundet de koder jeg skal bruge for at kunne sortere et tekstfelt som var et datofelt, men jeg kan zq ikke skidtet til at virke... =8/
denne kode: <% Session.LCID = 1030 'fra default.asp <!--#include virtual="dato.asp" --> 'hvilket er nedenstående: Set rs = Conn.Execute("SELECT S_plan_dato FROM fly_status ORDER BY S_plan_dato asc") Do Until rs.Eof dato = rs("S_plan_dato") dag = split(dato, "-") Response.Write(dag(0) & "-" & dag(1) & "-" & dag(2) & "<br>") rs.Movenext Loop rs.Close Set rs = Nothing%>
giver dette udtræk: 06-12-2004 06-12-2004 07-01-2005 07-12-2004 14-12-2004 22-12-2004 22-12-2004
Burde sorteringen ikke være sådan her: 06-12-2004 06-12-2004 07-12-2004 14-12-2004 22-12-2004 22-12-2004 07-01-2005
Bruger du tekstfelter til datoer? Jeg mener ikke at man kan sorterer tekstfelter.. hvis man kan, bliver det "alfabetisk".. dvs: "06", "06", "07", "07", "14", "22", "22".
Så det passer fint med, at "07-01-2005" klemmer sig ind mellem "06-12-2004" og "07-12-2004"..
"Det giver ingen problemer med at sortere efter dem bagefter..": Nu ved jeg ikke hvilken funktion, han bruger.. men det er nok noget i stil med BubbleSort.. Det fylder en del linier og sortere dem alfabetisk (mener jeg).. så kan man vælge at sorterer arrayen efter årstal (2004, 2005) som er dag(2).. så skulle den gerne sorterer alle 2004 og derefter 2005.
ok, jeg er nået frem til denne kode der sortere tekst dato'erne som jeg gerne vil have det:
dim filelist, arrFileList, changed, i, element, tmp Set rs = Conn.Execute("SELECT S_plan_dato FROM fly_status") Do Until rs.Eof rsdato = rs("S_plan_dato") dato = split(rsdato,"-") dag = dato(0) md = dato(1) aar = dato(2) hent = dato(0) & "-" & dato(1) & "-" & dato(2) hvilken = hvilken & "," & hent rs.Movenext Loop hvilken = Mid(hvilken,2) arrFileList = split(hvilken,",") Sub BubbleSort(arrBubbleSort) changed = true do while changed changed = false for i = 1 to ubound(arrBubbleSort) if CDate(arrBubbleSort(i-1)) > CDate(arrBubbleSort(i)) then tmp = arrBubbleSort(i-1) arrBubbleSort(i-1) = arrBubbleSort(i) arrBubbleSort(i) = tmp changed = true end if next loop End Sub
BubbleSort arrFileList
for each element in arrFileList response.write element & "<br>" next
<% Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("data.mdb")
set fly = Conn.Execute("SELECT * FROM fly_status ORDER BY aar, mdr, dag") do until fly.eof if fly("dag") < 10 then dag = "0"& fly("dag") else dag = fly("dag") end if if fly("mdr") < 10 then mdr = "0"& fly("mdr") else mdr = fly("mdr") end if response.write dag &"-"& mdr &"-"& fly("aar") &"<br>" fly.movenext loop %>
der 69 rækker i db'en hvor rs. loop'er 35 gange pr række, og i hver loop er der en rs2. der tjekker for bemærkninger.
Det lyder for mig ikke som en god ide af oprette et felt for dag, måned og år. Der må være en bedre mulighed for at sortere dato.
Jeg har fundet ud af at sortere dato. Se 26/12-2004 00:39:31.
Men jeg skal have det implementret i min nuværende kode. Det har jeg brug for hjælp til. Jeg vil gerne smide al koden her... hvis det ønskes. Den er lang.
-> thesurfer det er ikke et datofelt fordi det skal kunne indeholde andet en en dato. Derfor problemet. Som skrevet i 27/12-2004 13:19:05 så skriver jeg: "et tekst felt der fx skal kunne indeholde en dato" ;)
Hvis det ikke skulle indeholde andet, så: 27/12-2004 13:18:01
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.