Avatar billede snowball Novice
21. marts 2000 - 15:20 Der er 6 kommentarer og
1 løsning

ORDER BY spørgsmål

Jeg har denne SQL sætning: SELECT * FROM intouch WHERE Status = ''Hjemme'' ORDER BY udloeb

udloeb er en kolonne som datoer i formatet dd-mm-åå !

Når jeg laver min SELECT, så sorterer den dem også, men den sorterer dem efter dd og kigger ikke på resten. Kan man ikke få den til at kigge på hele datoen, sådan så 16-02-01 kommer før 15-05-00 ???

Snowball
Avatar billede snowball Novice
21. marts 2000 - 15:27 #1
Whoops...Den har lige smidt et par ' væk. Der er 2 ' før og efter Hjemme !!!

Snowball
Avatar billede sjensen Nybegynder
21. marts 2000 - 16:34 #2
snowball,

er det felt i databasen du kalder Udloeb en string eller et date felt ?

For at du kan sortere korrekt på datoen skal feltet enten være et datefelt, eller også skal du i string-feltet gemme datoerne i "amerikansk" format, d.v.s. åå-mm-dd

Hvis det er en paradoxdb kan du forholdsvis let ændre feltet fra string til date uden at miste indholdet, forudsat at de records der allerede findes i registret indeholden en valid dato i den form du beskriver (dd-mm-åå). Dette kræver dog at du dels har sat datoformatet i Kontrol panel, regionale/internationale til det danske format, og du dels samtidig har defineret årstallet til kun at være 2 tegn.

Samtidig skal Date-format i BDE-admin være sat til det samme. Hvis dette ikke er tilfældet er det nødvendigt at fremstille et lille konverteringsprogram der kan håndtere konverteringen af dato-felt indholdet for alle records i tabellen.
Avatar billede snowball Novice
22. marts 2000 - 14:52 #3
DB'en er Access DB, og det bli'r gemt som Text i DB'en !

Snowball
Avatar billede sjensen Nybegynder
22. marts 2000 - 16:02 #4
Jeg tror du kan gøre det samme med en Access, men da jeg er vant til paradox ved jeg ikke lige hvordan du kan ændre et felts type uden at miste dataene i det. Evt. kan du jo exportere alle data, rette databasen og så importere dem igen. Så længe datoen står i et korrekt format bør Access automatisk konvertere til date-formatet.

Problemet er jo at sortering på et text (string) felt foregår ved først at se på første tegn og sætte linierne iht. det, og for de der har samme første tegn kigges på det næste, og igen det næste. o.s.v.

Du kan derfor ikke bruge det danske dato-format i et textfelt til at sortere efter. Der skal datoerne være i amerikansk format, med ååmmdd, hvor en given dato altid er større (som tal/text) end de foregående dage/måneder/år og altid mindre end datoer efter.

En anden mulighed er som nævnt at lave et konverteringsprogram der "vender" teksten til det amerikanske format, så vil sorteringen virke, men alle de steder du bruger datoen skal du så tage højde for dette "omvendte" format.

Derfor er det bedste at gemme datoen i et Date-felt. Dermed vil du også kunne være ligeglad med om året er gemt med 2 eller 4 cifre. Når en dato vises er det alligevel de nationale indstillinger i Kontrol Panelet der afgør hvordan datoen skal fremstå.
Avatar billede snowball Novice
22. marts 2000 - 16:44 #5
Jeg kunne godt lave om på data typen uden nogen tabt af data, så det virker fint nu !

Kan man i sin SELECT sætning sætte noget ind så man kan bestemme om data'erne kan vises ascending eller descending ?

Snowball
Avatar billede sjensen Nybegynder
22. marts 2000 - 17:02 #6
Ja, med order by xxx desc

Når der ikke er noget efter order by xxx er det automatisk ASC

Desc for descending og ASC for ascending

Avatar billede snowball Novice
22. marts 2000 - 18:04 #7
Kanon !

Tak for hjælpen !

Snowball
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