Access 2007 sortieren von Datums die als Text eingetragen wurden
Hallo!
Ich habe ein Problem mit meiner Access Datenbank an der ich zurzeit arbeite. Ich habe historische Jahreszahlen in ein Feld eingegeben, welches ich vorher als Text definiert habe, weil ich sowohl Zahlen als auch Text verwendet habe um die Jahre vor bzw. nach Christus zu verdeutlichen. Ich möchte jetzt gerne die ganze Tabelle chronologisch ordnen (Bsp. von 280 BC bis 272 AD, wobei BC für "vor Christus" stehen soll und AD für "nach Christus"). Jetzt stehe ich nur vor dem Problem, dass ich keine Ahnung habe wie sowas geht. Ich bräuchte eine geeignete Sortierformel für die Filterfunktion, oder ein VBA Macro damit mir dies gelingt. Da ich aber nicht sehr viel davon verstehe, hoffe ich, dass mir hier jemand helfen kann.
Danke
Antwort schreiben
Antwort 1 von Marie vom 09.08.2022, 22:38 Options
Tja, sortieren wo es nichts zu sortieren gibt ist natürlich nicht so einfach. Mach Dir eine Abfrage mit einem zusätzlichen Feld, welches Du dann sortierst. Aber um Dir weiterzuhelfen müsste ich erstmal wissen was da noch alles drinsteht. man kann sehr viel machen, wenn Du überall BD oder AD dahinterstehen hast, dann würde ich es in der sortierten Spalte davorstellen, dann hast Du schon eine Sortierreihenfolge.
gruß marie
Antwort 2 von Main vom 09.08.2022, 23:05 Options
Hallo Marie!
Erst einmal danke für deine Antwort! Ich glaube aber du hast mein Problem nicht ganz richtig verstanden. Ich versuche es mal etwas deutlicher zu erläutern. Ich habe eine Datenbank über das römische Imperium erstellt. Des weiteren habe ich eine Tabelle mit allen wichtigen Schlachten der Antike errstellt. Jetzt nochmal zu meinem Problem. Diese Tabelle ist jetzt alphabethisch geordnet, d.h. sie folgt keiner zeitlich-chronologischen Ordnung. Jetzt will ich aber genau das haben. die spalte sieht so aus:
Year
100 AD
272 BC
46 BC
9 AD
usw. (BC steht für v. Chr. und AD für n. Chr.)
Die spalte habe ich als "Text" definiert, da ich ja Zahlen und Text in der Zelle hineinschreibe. Wenn ich diese jetzt absteigend sortieren will klappt das nur mit einer Formel für die Filterfunktion oder mit einer VBA Macro, weil Access nicht versteht, dass 200 BC viel früher ist als 200 AD (weil ja 200 vor Christus und 200 nach Christus 400 Jahre auseinander liegen).
Ich möchte jetzt gerne wissen ob es möglich ist diese Daten zeitlich-chronologisch zu sortieren, und wenn ja wie man das macht.
Danke für die Beiträge
LG, Main
Antwort 3 von Marie vom 09.08.2022, 23:11 Options
Ich habe Dich schon verstanden, wollte mich aber nicht hinsetzen und Dir etwas zusammenschreiben bevor ich genau weiß, ob Du überall AD oder BC dahinterstehen hast, sonst ist meine Arbeit für die katze.
Du kannst auch reine Zahlen nicht sortieren, wenn Du sie als Text geschrieben hast. Du musst das ohnehin aufspalten, aber wenn ich jetzt sicher bin, dass Du nur diese beiden Buschatebenfolgen und sonst nur Zahlen hast, dann bastele ich Dir eine Abfrage.
Bis dann
Gruß marie
Antwort 4 von Main vom 09.08.2022, 23:15 Options
Ok, sorry.... Wollt das Problem nur noch einmal genau darstellen.
Danke Marie, ich freue mich auf deinen Beitrag!
LG, Main
Antwort 5 von Marie vom 09.08.2022, 23:44 Options
SELECT deinetabelle.year
FROM deinetabelle
WHERE (((deinetabelle.year) Is Not Null))
ORDER BY IIf(Right$([year],2)="BC",-Val([year]),Val([year]));
Hier bitte, funktioniert. Gruß marie
Antwort 6 von Main vom 09.08.2022, 23:56 Options
Hallo Marie!
Danke für deine Hilfe! :) Wo gebe ich diese Befehlabfolge jetzt ein? Im VBA Eingabemodul von Access funktioniert es nicht (wörter sind rot eingeärbt).
Gruß, Main
Antwort 7 von Marie vom 10.08.2022, 00:01 Options
Statt "deinetabelle" muss der name deiner Tabelle stehen und das gibst Du dann in die SQL-Ansicht einer Abfrage wörtlich ein. Danach kannst Du Dir die Entwurfsansicht anschauen und kapierst vermutlich wie das zustande kommt und kannst noch andere Felder dazumachen. Brauchst Du felder, wo Year leer ist, dann geht das so nicht, dann musst due es sagen, dann müssen wir da noch eine null einsetzen, weil zum Sortieren in jedem feld eine Zahl stehen muss.
Sag bitte ob Du klarmkommst oder frag weiter.
Gruß marie
Antwort 8 von Main vom 10.08.2022, 00:03 Options
Ok, ich probier's!
Danke vielmals für deine nette und schnelle Hilfe!
LG
Antwort 9 von Marie vom 10.08.2022, 00:10 Options
Nochmal: Abfrage, neu, Ansicht SQL, meinen Text einkopieren exakt wie er ist, das Wort deinetabelle durch Deinen Tabellennamen ersetzen, schließen, speichern öffnen. :-))
danach in der Entwurfsansicht betrachten und die restlichen Felder, die Du noch brauchst, dazuklicken. Immer wenn Du diese Sortierung brauchst dann nicht die Tabelle, sondern diese Abfrage öffnen.
Nochmal gruß marie
Antwort 10 von Main vom 10.08.2022, 00:24 Options
Hallo Marie!
Es hat funktioniert, nur leider habe ich jetzt nur die Jahreszahlen ohne die restlichen Daten. Ich hätte mir das eher so vorgestellt, dass ich die Haupttabelle nach diesem Muster ordne und und nicht bloß eine query erstelle. Wenn ich die Haupttabelle zeitlich ordne, kann ich praktisch sehen wo, gegen wem usw. die früheste Schlacht der Antike stattfand und wo die späteste. Ich will sozusagen die Tabelle von 280 v. Chr. nach 272 nach Christus hin ordnen. Ist dies möglich?
LG, Main
Antwort 11 von Marie vom 10.08.2022, 00:27 Options
Nochmal zur Erklärung: Ich habe "before Christ" durch eine Zahl mit vorangestelltem Minuszeichen ersetzt und "Anno Domini" durch eine positive Zahl. Lies Dir mal die Val- Funktion durch, dann siehst Du, dass Du jetzt mit den Zahlen sogar rechnen könntest.
Allerdings musst Du eine 0 eintragen, wenn nicht überall eine Zahl jetzt drinsteht, sonst kriegst Du eine Fehlermeldung beim Sortieren, weil Access das dann wieder als Text ansehen würde. Der Einfachheit halber habe ich jetzt nur die Datensätze anzeigen lassen, wo year nicht leer ist. Sollte Dir das nicht reichen, und Du es nicht alleine hinkriegen, dann sag es, dann hängen wir die Null noch rein in Datensätze ohne Zahlenwert in Year.
Antwort 12 von Marie vom 10.08.2022, 00:32 OptionsLösung
Du kannst doch jetzt damit machen was Du willst, Du musst nur die eine Spalte so lassen, die wird doch gar nicht angezeigt. Wenn Du es korrekt so geschrieben hast wie ich gesagt habe, bekommst Du exakt deine Spalte year mitsamt den Buchstaben angezeigt. Die Sortierspalte ist ausgeblendet. Und Du kannst jetzt beliebig Viele Spalten bzw alle hinzufügen. oder auch absteigend sortieren.
Sag halt genau was Du willst. Oder kopier mal das rein, dann merkst Du es, dann werden alle Spalten angezeigt:
SELECT deinetabelle.*
FROM deinetabelle
WHERE (((deinetabelle.year) Is Not Null))
ORDER BY IIf(Right$([year],2)="BC",-Val([year]),Val([year]));
Gruß marie
Antwort 13 von Main vom 10.08.2022, 00:35 Options
Nein, den Befehl verstehe ich schon, ich frage mich nur ob man diesen auch auf die Haupttabelle anwenden kann, da ich mit deiner Methoda ja "nur" eine Nebentabelle (query) erstelle in der die Daten geordnet sind.
Die zeitiche Ordnung ist dür die Haupttabelle deshalb so wichtig, weil ich diese für das fertige Ausfüllen der Tabelle mit dem Lookup Wizard (mehrfachauswahl aus einer Tollbox) brauche.
LG
Antwort 14 von Marie vom 10.08.2022, 00:42 Options
Ich hatte Dir doch in Antwort 7 schon geschrieben, dass Du dann in der Entwurfsansicht alle Spalten deiner Tabelle nach Belieben hinzufügen kannst wie Du willst. Da kannst Du dann die Reihenfolge der Anzeige wählen und noch weitere Spalten sortieren, das musst Du doch auch lernen :-)))
Einfach den Spaltennamen in der Entwurfsansicht doppelt anklicken.
Wenn Du das Sternchen machst werden einfach nur sämtliche Spalten angezeigt. Wenn Dir das genügt, weil 333 nur Issos Keilerei war und sonst nichts, dann kannst Du das Sternchen lassen. :-))
Liebe grüße Marie
Antwort 15 von Main vom 10.08.2022, 00:43 Options
Hey!
Alles klar! Hab's gebacken gekriegt!
Danke nochmal für die Hilfe! Echt super nett von dir!
LG, Main
Antwort 16 von Marie vom 10.08.2022, 00:43 Options
Hey, du erstellst doch keine neue Tabelle, sondern eine Abfrage, die Du wann auch immer benutzen kannst. Sortieren tut man mit Abfragen.
Antwort 17 von Main vom 10.08.2022, 00:50 Options
Alles klar, ich glaub jetzt raff ich's!
Danke
Antwort 18 von Marie vom 10.08.2022, 00:58 Options
Okay, dann schlaf gut. :-))