collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 80
  • Punkt Versteckte: 1
  • Punkt Mitglieder: 1

Es sind keine Mitglieder online.

* Forenstatistik

  • stats Mitglieder insgesamt: 14129
  • stats Beiträge insgesamt: 68347
  • stats Themen insgesamt: 9206
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 415

Autor Thema: Sortierung ignoriert Bindestriche im String  (Gelesen 104 mal)

Offline Else

  • Newbie
  • Beiträge: 17
Sortierung ignoriert Bindestriche im String
« am: Dezember 04, 2018, 18:05:21 »
Liebe Forenprofis,

heute wende ich mich mit einem Problem an Euch, von dem ich hoffe, dass ich nur deshalb nichts Gescheit's dazu im Internet finde, weil es so einfach ist. Aber ich komme einfach nicht darauf.

Ich habe diverse Endlosformulare mit Namenslisten. Diese basieren auf Abfragen, die nach Nachnamen (und Vornamen) aufsteigend sortiert sind. Nun bekomme ich in Access folgende Reihenfolge dargeboten:

Groß, Sabine
Große, Sabine
Große Wagner, Sabine
Großenburg, Sabine
Große-Wagner, Sabine

Der Bindestrich wird bei der Sortierung ignoriert und das ist für den Anwender wahnsinnig verwirrend und deshalb möchte ich das wahnsinnig gerne ändern. Es wäre toll, wenn ich Access beibiegen könnte, dass es den Bindestrich als Zeichen berücksichtigt.

Folgende Sachen habe ich schon ausprobiert:

In allen Modulen stand ursprünglich "Option Compare Database". Stattdessen habe ich "Text" und "Binary" ausprobiert und auch die Option komplett weggelassen, aber ohne einen sichtbaren Unterschied.

Dann habe ich in den Access-Optionen -> Allgemein -> "Sortierreihenfolge bei aktueller Datenbank" sowohl auf "Allgemein" wie auch auf "deutsches Telefonbuch" umgestellt, dies bei Programmebene und verknüpfter Datenebene und jeweils die Datenbanken komprimiert und repariert. Nüscht passiert.

Dann habe ich in der Windows-10-Systemsteuerung -> Region -> Sortiermethode ändern -> abwechselnd "Wörterbuch" und "Telefonbuch DIN" ausgewählt und auch das scheint keinen Unterschied zu machen.

Ihr Lieben, was hab ich übersehen? Bis hierhin schonmal herzlichen Dank fürs Lesen und Mittenken

Irene
 

Offline Lachtaube

  • Access Guru
  • ****
  • Beiträge: 1427
Re: Sortierung ignoriert Bindestriche im String
« Antwort #1 am: Dezember 05, 2018, 02:51:33 »
Hi Irene,

bezüglich Sortierung ist Access ziemlich unflexibel. Die Sortierung wird beim Anlegen einer neuen Datenbank entsprechend des eingestellten Sortier-Schemas in den Optiuonen für eine Datenbank einmalig festgelegt. Eine nachträgliche Änderung ist nicht möglich.

Man könnte jetzt hingehen und in der Abfrage die Bindestriche in einem weiteren nicht angezeigtem Feld mit der Replace()-Funktion ersetzen und danach sortieren. Damit hebeltman aber eine Index-Nutzung aus und wird bei größerem Datenbestand keine Freude an der abfrage haben.

Alternativ bietes es sich an, wenn man mit einer binären Sortierung leben kann, ein zusätzliches binäres Feld in die Tabelle einzufügen. Weil binäre Felder in der Entwurfsansicht nicht angeboten werden, kann man eines aus der Systemtabelle MSysObjects  (vorher dazu in den Navigationseinstellungen Systemtabellen einblenden lassen) aus der Entwurfsansicht kopieren und in die eigene Tabelle einfügen. Mit einer DDL-Abfrage wäre das auch möglich:
Code: SQL
ALTER TABLE DerTabellenName ADD COLUMN DerNeueFeldName BINARY;
Das Feld sollte dann mit einem Index ausgestattet werden.

Nun gilt es, die Nachnamen in das Feld zu befördern. Dazu bietet sich die StrConv()-Funktion an, die in einer Aktualisierungsabfrage verwendet wird.
Code: SQL
UPDATE DerTabellenName
SET    DerNeueFeldName = StrConv(Nachname, 128, 1031);
Die 128 steht für vbFromUnicode und die 1031 ist die LCID für die deutsche Sprache in Deutschland -vielleicht darf man sie auch weglassen. Die Darstellung zeigt hinterher vermutlich asiatische Zeichen an, woran man sich nicht stören sollte, weil die Spalte ja nur zur Sortierung verwendet wird. Ich vermute jedoch, dass dabei die Umlaute und das Eszett nicht mehr ordentlich ins Gefüge passen. Das müsstest Du selbst testen. Dann müsste man vor der Behandlung mit StrConv() diese Zeichen in Ae, Oe, Ue, ae, oe, ue und ss umwandeln.

Mit Access Versionen ab 2010 könnte man ein Datenmakro schreiben, das bei Änderungen oder beim Neuanlegen von Datenätzen die Knovertierung in das Binärfeld immer aktuell hält. In niedrigeren Versionen wird man vermutlich im Formular-Ereignis Vor Aktualisierung das Binärfeld beschreiben. Im Bildanhang am Ende des Beitrags kannst Du das Ergebnis mit Deinen Daten betrachten.
Grüße von der (⌒▽⌒)
 
Folgende Mitglieder bedankten sich: Else

Offline Else

  • Newbie
  • Beiträge: 17
Re: Sortierung ignoriert Bindestriche im String
« Antwort #2 am: Dezember 05, 2018, 16:25:02 »
Hallo Lachtaube,
 
das ist ja der Wahnsinn, was Du hier um 2:51 nachts produzierst, da können andere im ausgeschlafenen Zustand nur von träumen! ;-) Vielenvielen Dank für die tollen Lösungsansätze!

Schade, dass ich das Sortierschema nicht nachträglich ändern kann, aber wie ich mittlerweile herausgefunden habe, hätte das eh nichts gebracht. Ich habe nun in den Access-Optionen das Sortierschema für neue Datenbanken auf "Deutsches Telefonbuch" gestellt und eine neue leere Datenbank erstellt, ein paar Testdaten eingetragen und voila: Der Bindestrich wird hartnäckig ignoriert. Frech!

Hast Du (oder jemand der stillen Leser) vielleicht eine Ahnung, welches Schema einen Bindestrich berücksichtigt? Erstellt wurde meine Datenbank mit der Einstellung "Allgemein".

Ich verfolge jetzt erstmal Deine Lösung auf Abfrageebene weiter, indem ich mit Replace ein berechnetes Feld erzeuge, bei dem der Bindestrich im Nachnamen durch einen Unterstrich ersetzt wird (den Unterstrich mag Access nämlich durchaus sortieren). Wenn mir das mein System zu sehr ausbremst, dann beiße ich in den sauren Apfel und arbeite Deinen Vorschlag mit dem Binärfeld auf Datenebene ein. (Da hab ich ein bisschen Bauchweh bei, weil ich finde, dass alles, was Sortierung betrifft, nix in den Tabellen zu suchen hat.) Die "Unterstrichlösung" könnte ich so gesehen auch auf Datenebene als normales Textfeld schreiben lassen, das erspart mir zumindest die chinesischen Zeichen.

Jedenfalls sehe ich jetzt wieder optimistischer in die Zukunft, nochmal herzlichen Dank und noch einen schönen Tag!

Irene
 

Offline Else

  • Newbie
  • Beiträge: 17
Re: Sortierung ignoriert Bindestriche im String
« Antwort #3 am: Dezember 05, 2018, 16:41:52 »
P.S.: Okay, jetzt habe ich es getestet und muss leider vermelden: Das berechnete Replace-Feld ist jetzt schon zu langsam, das macht tatsächlich überhaupt keinen Spaß! Also muss es doch das festgeschriebene Feld sein.

Viele Grüße
Irene
 

 

Sortierung von jahresübergreifenden Kalenderwochen

Begonnen von thorstens1304Board Tabelle/Abfrage

Antworten: 5
Aufrufe: 3638
Letzter Beitrag August 18, 2010, 11:51:42
von MzKlMu
Automatische Sortierung im formularbasierten Filter

Begonnen von MarkusNBoard Formular

Antworten: 14
Aufrufe: 9942
Letzter Beitrag September 08, 2010, 21:25:42
von database
Sortierung / Gruppierung im Bericht

Begonnen von smily68Board Bericht

Antworten: 15
Aufrufe: 13736
Letzter Beitrag Januar 29, 2015, 08:40:25
von ZD14
Bericht mit Sortierung

Begonnen von -Tom-Board Access Programmierung

Antworten: 4
Aufrufe: 4046
Letzter Beitrag Mai 10, 2011, 11:04:41
von -Tom-
Mehrfachauswahl Sortierung

Begonnen von Ben.WischBoard Formular

Antworten: 4
Aufrufe: 2513
Letzter Beitrag August 02, 2011, 17:01:54
von Ben.Wisch