Supportnet / Forum / Datenbanken
Datum - Sortierung in Access
Frage
Hallo Supportler - ich mal wieder,
bin bis jetzt (außer zu einer Notlösung) zu keinem befriedigendem Ergebnis bei Sortierung einer LP-Liste nach:
Interpret, Erscheinungsdatum, LP-Titel (in dieser Reihenfolge!).
Das Datum soll dabei nur in Monat und Jahr – Beispiel: Feb 1963 – angezeigt werden, [b][u]wenn[/u] [/b]ich die Daten so genau habe.
Das klappt auch soweit -Dank der Hilfe von Ralf :-)
Bei manchen Platten ist aber nur das Jahr bekannt bei einigen nicht einmal das.
Eine Datumszelle leer zu lassen ist kein Problem aber mit welcher Formatierung bekomme ich in der Tabelle eine korrekte aufsteigende Sortierung (wenn mehrere LP's eines Interpreten mit Komplettdatum da sind) hin, wenn bei Anderen dann nur Monat-Jahr oder nur das Jahr zur Verfügung steht?
Bei Datumsformat muss ich immer das ganze Datum eingeben, sonst Fehlermeldung auch wenn Format mmm jjjj eingestellt ist. Beim Datumsformat ist die aufsteigende Sortierung kein Problem, aber dann muss ich als „Notlösung“ eben fiktive Tag- und Monatsdaten eingeben auch wenn ich nur das Erscheinungsjahr weiß. Damit zumindest die falschen Monate nicht angezeigt werden kann ich dann nur noch jjjj formatieren damit nur das Jahr angezeigt wird.
Auch dann stimmt die aufsteigende Reihenfolge, aber die Daten sind falsch (bzw. nicht ganz korrekt).
Bei Formateinstellung „Text“ kann ich zwar nach Jahren und Monat sortieren, aber innerhalb eines Jahres kommen natürlich die Monate nicht in der richtigen Reihenfolge, da z.B. der April vor den März sortiert wird und so die Erstausgabeliste nicht stimmt.
Welche Lösung kann mir hier weiterhelfen?
Da ich noch nicht lange mit Access arbeite habe ich leider noch null Ahnung von SQL oder auch VBA-Makros.
Für hilfreiche Antworten schon mal herzlichen Dank
Holger
Antwort 1 von lorf55
Hallo Holger,
und wenn du nun jeweils für Tag, für Monat und für Jahr ein Tabellenfeld nehmen würdest, denn könntest du deine Daten eingeben, wie es dir passt. Du müsstest denn nur diese für die Ausgabe mit einer Abfrage wieder zusammen bauen. Denn kannst du ganz gepflegt sortieren, wie es dir passt.
Die Abfrage könnte so aussehen:
usw
Denn sieht die Abfrage am Ende so aus;
Ich hoffe, du kannst damit was anfangen.
Gruß
lorf
und wenn du nun jeweils für Tag, für Monat und für Jahr ein Tabellenfeld nehmen würdest, denn könntest du deine Daten eingeben, wie es dir passt. Du müsstest denn nur diese für die Ausgabe mit einer Abfrage wieder zusammen bauen. Denn kannst du ganz gepflegt sortieren, wie es dir passt.
Die Abfrage könnte so aussehen:
SELECT [Tag] & IIF(Tag,".","") & [Monat] & IIF(Monat,".","") & [Jahr] AS Datum
FROM Test
ORDER BY Test.Jahr;
Wenn du Monat als Text anlegst, kannst du auch z.B. März und 03 und 3 abwechselnd benutzen. Denn brauchst du allerdings zum Sortieren noch eine Tabelle TestMonate mit den Monatsnamen und einem Feld für die Sortierreihenfolge, z.B.Monat Sortierung
1 1
01 1
Januar 1
2 2
02 2
Februar 2usw
Denn sieht die Abfrage am Ende so aus;
SELECT [Tag] & IIf([Tag],".","") & [Test.Monat] & IIf([Test.Monat],".","") & [Jahr] AS Datum, Test.Jahr, TestMonate.Sortierung AS MonSortierung
FROM Test INNER JOIN TestMonate ON Test.Monat = TestMonate.Monat
ORDER BY Test.Jahr;Ich hoffe, du kannst damit was anfangen.
Gruß
lorf
Antwort 2 von Verwalter_51
Hallo lorf,
jetzt erst mal ne kurze Zwischenmeldung und einem Danke, das du dich mit meinem Problem beschäftigt hast.
Werde jetzt am Wochenende in Ruhe die angedachte Möglichkeiten von dir ausprobieren. Ergebnisbericht folgt dann.
Gruß nach Magdeburg und ein schönes Wochenende
Holger
jetzt erst mal ne kurze Zwischenmeldung und einem Danke, das du dich mit meinem Problem beschäftigt hast.
Werde jetzt am Wochenende in Ruhe die angedachte Möglichkeiten von dir ausprobieren. Ergebnisbericht folgt dann.
Gruß nach Magdeburg und ein schönes Wochenende
Holger
Antwort 3 von lorf55
Gerade wollte ich schreiben, wie das Ergebnis aussieht, da habe ich gemerkt, dass Nur-Jahreszahlen nicht mit angezeigt werden. Deshalb ist die Abfrage jetzt so:
So sieht das Ergebnis denn aus:
Jahr und MonatSortierung sind hier nur zur besseren Übersicht. Wenn die Nur-Jahreszahlen als Letzte stehen sollen, lässt du TestMonate.Sortierung weg, so dass nur ORDER BY Test.Jahr; übrig bleibt.
Die Test-Tabelle sieht so aus:
Und der Vollständigkeit halber meine TestMonat-Tabelle:
Wenn du jetzt schon jede Menge "Datumse" eingegeben hast, brauchst du die nicht nochmal neu eingeben, sondern kannst die in die Test-Tabelle einfügen mit:
So weit, so gut, wenn es dir nicht zu kompliziert ist.
Gruß
lorf
SELECT [Tag] & IIf([Tag],".","") & [Test.Monat] & IIf([Test.Monat],".","") & [Jahr] AS Datum,
Test.Jahr, TestMonate.Sortierung AS MonatSortierung
FROM Test LEFT JOIN TestMonate ON Test.Monat = TestMonate.Monat
ORDER BY Test.Jahr, TestMonate.Sortierung;So sieht das Ergebnis denn aus:
Datum Jahr MonatSortierung
1967 1967
Januar.1967 1967 1
20.01.1967 1967 1
01.1967 1967 1
Februar.1967 1967 2
05.1977 1977 5
1988 1988
4.Januar.1997 1997 1
23.02.1997 1997 2
5.1.2002 2002 1
März.2003 2003 3Jahr und MonatSortierung sind hier nur zur besseren Übersicht. Wenn die Nur-Jahreszahlen als Letzte stehen sollen, lässt du TestMonate.Sortierung weg, so dass nur ORDER BY Test.Jahr; übrig bleibt.
Die Test-Tabelle sieht so aus:
Tag Monat Jahr
5 1 2002
23 02 1997
März 2003
1967
4 Januar 1997
Februar 1967
01 1967
20 01 1967
Januar 1967
1988
05 1977Und der Vollständigkeit halber meine TestMonat-Tabelle:
Monat Sortierung
1 1
01 1
Januar 1
January 1
2 2
02 2
Februar 2
February 2
3 3
03 3
März 3
March 3
4 4
04 4
April 4
April 4
5 5
05 5
Mai 5
Mai 5Wenn du jetzt schon jede Menge "Datumse" eingegeben hast, brauchst du die nicht nochmal neu eingeben, sondern kannst die in die Test-Tabelle einfügen mit:
INSERT INTO Test ( Tag, Monat, Jahr )
SELECT day(deinDatum), month(deinDatum), year(deinDatum) FROM deineTabelle;So weit, so gut, wenn es dir nicht zu kompliziert ist.
Gruß
lorf
Antwort 4 von Verwalter_51
Hallo lorf,
mit ein wenig umstellen auf meine Daten hab ich das jetzt Dank deiner Hilfe hinbekommen und meine Sortierung klappt jetzt so, wie angedacht.
Ich hatte eben nicht bedacht, das man auch das Datum noch "atomar" zerlegen muss um so eine Sortierung zu erreichen.
Hast mir sehr geholfen :-) gibt 50 Bonuspunkte
Gruß Holger
mit ein wenig umstellen auf meine Daten hab ich das jetzt Dank deiner Hilfe hinbekommen und meine Sortierung klappt jetzt so, wie angedacht.
Ich hatte eben nicht bedacht, das man auch das Datum noch "atomar" zerlegen muss um so eine Sortierung zu erreichen.
Hast mir sehr geholfen :-) gibt 50 Bonuspunkte
Gruß Holger
Antwort 5 von lorf55
Ich glaub ich werde reich ;-).

