Avatar billede sandmanden Nybegynder
13. november 2006 - 14:08 Der er 6 kommentarer og
1 løsning

Sortering af tekst og tal i en tabel

Jeg har lavet en tabel over medarbejdere og uddannelser og har en kolonne, som skal vise, hvilken dato uddannelsen er bestået. I Datatype har jeg valgt Dato og klokkeslæt, men det forhindrer mig i at skrive ”Tilmeldt” ud for de uddannelser, som endnu ikke er beståede, men kun tilmeldte. Jeg har brug for at sortere dem, således at de tilmeldte uddannelser ligger øverst, og dernæst de beståede uddannelser i kronologisk rækkefølge, men med de sidst beståede øverst. Jeg har på fornemmelsen, at jeg skal ind og opstille nogle kriterier under Valideringsregel, men hvilke?!
Avatar billede mugs Novice
13. november 2006 - 15:18 #1
Lav et felt  i tabellen som et Ja/Nej felt som du kan afkrydse afhængig om uddannelsen er bestået eller ej.

Derefter kan du i en forespørgsel sortere som du ønsker.
Avatar billede kjulius Novice
13. november 2006 - 21:14 #2
Alternativt kan du jo også opfatte en Null værdi i datofeltet som "Tilmeldt". Du kan så i en forespørgsel konvertere null og datoen til en tekststreng:

SELECT IIf(BeståetDato Is Null, 'Tilmeldt', 'Bestået d. ' & Format(BeståetDato, 'dd.mm.yyyy')) AS Status
FROM dinTabel
Avatar billede Slettet bruger
13. november 2006 - 23:33 #3
Du har brug for en blanding af de 2 foregående kommentarer. Du laver et felt:

Status: IIf(BeståetDato Is Null; 'Tilmeldt'; 'Bestået')
og sorterer faldende.

Herefter sorterer du faldende på BeståetDato!~)
Avatar billede kjulius Novice
14. november 2006 - 18:49 #4
Ja, undskyld, hvis jeg ikke har medtaget sorteringsdelen, men det bør så være:

SELECT IIf(BeståetDato Is Null,'Tilmeldt','Bestået d. ' & Format(BeståetDato,'dd.mm.yyyy')) AS Status
FROM dinTabel
ORDER BY IIf(BeståetDato Is Null,#1/1/2100#,BeståetDato) DESC;

Under sorteringen erstattes null med den 1. januar 2100, hvilket sikrer (i hvert fald i en del år ud i fremtiden), at de kun tilmeldte bliver sorteret øverst.
Avatar billede sandmanden Nybegynder
15. november 2006 - 16:10 #5
Hej Kjulius.
Jeg er total nybegynder inden for Access og er derfor nødt til at have skåret det ud i pap. Jeg har lavet et nyt felt og har indsat IIf(BeståetDato Is Null,'Tilmeldt','Bestået d. ' & Format(BeståetDato,'dd.mm.yyyy'))
Hvor skal jeg indsætte det næste?!
Avatar billede kjulius Novice
15. november 2006 - 20:38 #6
Så bruger du sikkert, som de fleste nybegyndere, den grafiske brugerflade. Mit eksempel er baseret på, at du skifter til SQL-visning. Grundet til, at jeg (og de fleste andre herinde) bruger "ren" SQL er, at det er pokkes svært at formidle funktionalitet, som er bare det mindste over "baby-niveau", når man ikke har mulighed for at vise grafik.

Men jeg skal gøre mit bedste for at "oversætte" til "grafik-sprog":

SQL sætningen IIf(BeståetDato Is Null,'Tilmeldt','Bestået d. ' & Format(BeståetDato,'dd.mm.yyyy')) AS Status omskrives til:

I "Felt" ruden... Status: IIf(BeståetDato Is Null,'Tilmeldt','Bestået d. ' & Format(BeståetDato,'dd.mm.yyyy'))
I "Vis" ruden... Sæt tjek.

Det er vist også sådan du har gjort, hvis jeg forstår dig ret.

Så kommer vi til ORDER BY IIf(BeståetDato Is Null,#1/1/2100#,BeståetDato) DESC
som kan "oversættes" til:
I "Felt" ruden... IIf(BeståetDato Is Null,#1/1/2100#,BeståetDato)
I "Sorter" ruden... Faldende
I "Vis" ruden... Sæt ikke tjek

Jeg håber du blev lidt klogere... :-)

Som sagt synes jeg det er rigtigt svært at formidle en SQL til en sådan grafisk visning, og desuden er det ikke alle SQL forespørgsler der overhovedet kan vises i det grafiske format. Så hvis du er på vej til at bruge din database lidt mere, er det en god idé at få styr på SQL. Jeg starter ofte med at bruge den grafiske flade til at få de grundlæggende relationer og felter på plads, hvorefter jeg skifter til SQL-visningen for at arbejde videre med den. SQL er faktisk meget logisk opbygget, når man først får knækket "koden".
Avatar billede sandmanden Nybegynder
16. november 2006 - 08:49 #7
Det virker - tusind tak!
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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