# Access Zeit / Minuten sortieren?



## Matze7 (23. Februar 2010)

Hab da mal ne Anfängerfrage... 

Ich habe eine Abfrage gemacht, in der z.B. auch eine Spalte Länge / Zeit vom kleinsten zum größten Wert sortiert werden soll. 
Ich habe da z.B. Werte von 1 Minute bis 999 Minuten drin. Wenn ich jetzt aufsteigend sortieren lassen, geht er leider nicht der Reihenfolge nach, wie es sonst üblich ist. (Spalte als Text formatiert) 
Kann ich trotz Textfeld die Minuten so sortieren, das erst die einstelligen, dann die zweistelligen und zuletzt die dreistelligen Minuten in der richtigen Reihenfolge angezeigt werden?

Danke.


----------



## CPoly (23. Februar 2010)

Du musst eben aus dem String ein Int machen.

```
...ORDER BY CInt(spalte)
```

Ich benutze aber kein Access(muss es aber jetzt lernen für die nächsten Monate), habe nur kurz gegoogelt.


----------



## Drogist (23. Februar 2010)

Moin,

erstelle eine Abfrage. Dort generierst du ein neues Feld und gibst dann über [F2] diesen Ausdruck: 

```
NumMinuten: ZInteger( [TxtMinuten])
```
Dann kannst du nach dem Feld sortieren, da alle Textwerte aus dem Feld TxtMinuten in numerische Werte umgewandelt wurden.


----------



## Matze7 (23. Februar 2010)

Sorry, leider verstehe ich jetzt nur noch Bahnhof. ;-)

Das mit F2 klappt irgendwie nicht, bzw. weiß ich nicht genau wann ich das drücken muss und warum ich ein neues Feld brauche, wenn ich doch bereits eins in meiner Tabelle habe, was abgefragt wird.

Ich habe doch bereits eine Abfrage generiert in der ich (über den Abfrage Assistent) mein Feld "Zeit" aus der Haupttabelle ausgesucht habe. 
Dieses soll jetzt aufsteigend sortiert werden. Müsste ich dazu nicht in der Entwurfsansicht unter Kriterien des gewählten Feldes einen entsprechenden Ausdruck hinschreiben?


----------



## tombe (24. Februar 2010)

Mache es so wie CPoly oben geschrieben hat.

Meiner Meinung nach am einfachsten zu lösen indem du die Abfrage öffnest und in die SQL Ansicht wechselst. Hier gibst du dann am Ende der Abfrage ein:


```
ORDER BY INT (deine Spalte)
```
 
Gruß Thomas


----------



## Matze7 (24. Februar 2010)

tombe hat gesagt.:


> Mache es so wie CPoly oben geschrieben hat.
> 
> Meiner Meinung nach am einfachsten zu lösen indem du die Abfrage öffnest und in die SQL Ansicht wechselst. Hier gibst du dann am Ende der Abfrage ein:
> 
> ...



Hmmm, habe in die SQL Ansicht gewechselt und dort den Code am Ende hinzugefügt. Leider kommt jetzt "Zeichen am Ende von SQL Anweisung gefunden"

Davor stand schon: (habe die Namen mal Beispielhaft angepasst...)

SELECT Liste.Spalte1, Liste.Spalte2, Liste.Spalte3 
FROM Liste;


----------



## CPoly (24. Februar 2010)

Und du hast es so angehängt:
SELECT Liste.Spalte1, Liste.Spalte2, Liste.Spalte3
FROM Liste ORDER BY CInt(Liste.SpalteFoo);

und nicht etwa nach dem Semikolon.


----------



## Matze7 (24. Februar 2010)

CPoly hat gesagt.:


> Und du hast es so angehängt:
> SELECT Liste.Spalte1, Liste.Spalte2, Liste.Spalte3
> FROM Liste ORDER BY CInt(Liste.SpalteFoo);
> 
> und nicht etwa nach dem Semikolon.



Ok, jetzt nimmt er es... Habe von SQL leider noch keine Ahnung...

Wenn ich nun aber die Abfrage aufrufe, kommt "Dateitypenkonfikt im Kriterienausdruck"...


----------



## tombe (25. Februar 2010)

Stell hier doch mal die SQL-Anweisung rein so wie du sie jetzt geschrieben hast, vielleicht finden wir dann ja die Ursache.
Du solltest aber auch prüfen ob der Fehler wirklich von der Abfrage selber ausgelöst wird. Es könnte nämlich auch sein, das du einen Rückgabewert der Abfrage an eine Variable übergibst die einen anderen Datentyp hat.

Gruß Thomas


----------



## Drogist (25. Februar 2010)

Nochmal, jetzt allerdings korrekt und mit Bild:
Du hast bereits eune Abfrage mit dem Feld "Zeit".
Du gehst in die nächste leere Spalte und trägst dort ein:

```
ZeitSortiert: ZInteger([Zeit])
```
Du könntest als Assistenten auch *Strg*-F2 verwenden, wenn du in dem freien Feld bist. Dann unterstützt dich Access etwas mehr.
Danach Sortieren einstellen
Wenn du dann in die SQL-Ansicht gehst, siehst du, wie das SQL-Statement aussieht.

Ich bin nach wie vor der Meinung, dass für ANWENDER (insbesondere Einsteiger) der Weg über die "normale" Abfrage wesentlich hilfreicher ist als SQL-Statements zu übertragen, ohne sie wirklich zu verstehen. - Ach ja, ich kann sehr wohl mit SQL umgehen und nutze die "direkte" Methode meist selber für eigene Projekte.


----------

