Memofeld sortieren

Moderator: ModerationP

Memofeld sortieren

Beitragvon benny66 » 25. Aug 2021, 10:05

Hallo,
ein Feld ist vom Typ Memo (Langer Text). In einer Abfrage soll es aufsteigend sortiert werden. Im QBE wird die Einstellung akzeptiert. Doch das Ergebnis zeigt, dass die Sortierung manchmal nicht richtig ist.
Ich vermute, dass es am Memo-Typ legt, da im Kontextmenü des Tabellenfeldes die Sortierung ausgegraut ist.
Das bestätigt sich bei einer Abfrage mit einem Aliasfeld mit Links([Memofeld];10). Man bekommt dies und weiteres
Code: Alles auswählen
<div><font
<div>Allg
<div>16 Au
<div>Arist

Wie kann man erreichen, dass die html-Tags beim Feld unberücksichtigt werden und sich im Aliasfeld des Bsp. die Sortierfolge 16 Au, Allg, Arist ergibt?
Gruß Benny
benny66
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 948
Registriert: 22. Nov 2015, 21:56

Re: Memofeld sortieren

Beitragvon Bitsqueezer » 25. Aug 2021, 10:44

Hallo,

den HTML-Teil kannst Du mit der Funktion "PlainText" rausziehen, dann hast Du den reinen Text. Das kannst Du in ORDER BY verwenden.
Sinnvollerweise vor Anwendung der Left-Funktion. Also "Left(PlainText(Memofeld,10))".

Gruß

Christian
Bitsqueezer
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 8503
Registriert: 21. Jun 2007, 12:17

Re: Memofeld sortieren

Beitragvon benny66 » 25. Aug 2021, 10:52

Hallo,
läuft super, danke
edit "Left(PlainText(Memofeld),10)"
Gruß Benny
benny66
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 948
Registriert: 22. Nov 2015, 21:56

Re: Memofeld sortieren

Beitragvon benny66 » 25. Aug 2021, 11:19

Hallo,
doch noch eine Nachfrage
Welchen Einfluss hat das Left auf Speicher und Performance? Es handelt sich ja um eine Memofeld, das mehr als 255 Zeichen groß sein kann.
Am besten wäre es wohl, die Abfrage zu speichern und als Datensatzquelle im Formular zu verwenden.
Access soll sie angeblich "strukturieren", aber auch keine Werte schreiben, was den Speicher beeinflussen würde (davon abgesehen, dass das heute kein Problem ist)
Hintergrund ist, dass die ersten zehn Zeichen häufig identisch sind und Access dann wahrscheinlich zufällig die Sortierung dann vornimmt.
Also left vor dem PlainText weglassen (evtl. Performance-Einbuße) oder noch einen weiteren Alias mit Right zur weiteren Sortierung?
Gruß Benny
benny66
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 948
Registriert: 22. Nov 2015, 21:56

Re: Memofeld sortieren

Beitragvon Bitsqueezer » 25. Aug 2021, 14:25

Hallo,

so eine Sortierung kann nie schnell werden, da Memofelder ganz anders gespeichert werden, nicht Bestandteil eines Datensatzes sind (grob gesagt, enthält der Datensatz einen Link zu dem Inhalt des Feldes an anderer Stelle).

Wenn es um Performance geht, könntest Du die z.B. ersten 50 Zeichen des Memofeldes zusätzlich in ein normales Tabellenfeld schreiben, mußt Du natürlich entsprechend selbst für sorgen, daß das immer übereinstimmt mit dem Memofeld. Das Zusatzfeld kann dann auch indiziert werden und entsprechend schneller ist die Sortierung.

Weiterer Vorteil ist, daß Du "PlainText" schon beim Speichern anwenden kannst und damit auch nicht mehr in der Abfrage aufgerufen werden muß.

Und die 50 redundanten Zeichen stören nicht vom Platzbedarf her. Das Feld wird natürlich nur intern verwaltet und nicht dem User angezeigt.

Übrigens eignet sich so ein Zusatzfeld gut für ein persistentes berechnetes Feld, wobei persistent nur in einem DB-Server geht, nicht mit Access-Tabellen. Würde hier auch keinen Sinn machen, da es dann auch wieder live berechnet werden würde und damit die gleichen Performanceprobleme erbringt.

Ich habe keine Ahnung, was Du mit "strukturieren" meinst.

Eine Abfrage mit einem berechneten Feld (also mit Berechnung als Bestandteil der Abfrage) speichert die Berechnung nicht, die wird live durchgeführt und belegt nur Hauptspeicher im Ergebnis der Abfrage (bzw. je nach Umfang auch Temp-Speicherplatz auf der Platte) nur solange, wie das Ergebnis nicht geschlossen wird.

Gruß

Christian
Bitsqueezer
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 8503
Registriert: 21. Jun 2007, 12:17


Zurück zu Access Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast