German Sortierung der Daten in einer ComboBox

Fontanus

Member
Licensed User
Hallo an Alle,

ich habe mal wieer ein kleines Problem bei der Entwicklung meines Progrämmles. Ich möchte Daten mit Hilfe einer ComboBox selektieren. Dazu lese ich die Daten aus der SQLite-DB ein, was auch alles wunderschön funktioniert. Da die Menge der Auswahldaten in der Combobox schon relativ groß ist, wäre eine Sortierung natürlich von Vorteil. Meine bisherigen Versuche schlugen fehl und die Combobox bietet nach meinen Recherchen auch keine Möglichkeit einer Sortierung.
Gibt es eine Möglichkeit, die ich bisher übersehen habe oder hat jemand dazu einen guten Vorschlag?

Ich danke schon jetzt für alle Vorschläge.

Gruß

Fontanus
 

specci48

Well-Known Member
Licensed User
Hallo Fontanus,

wie Du bereits richtig gesehen hast, bietet zumindest die Combobox keine Möglichkeit zur Sortierung. Daher zwei Vorschläge:

1. Ich habe zwar noch nicht mit SQLite gearbeitet, aber wenn Du die Daten per Select aus der DB einliest, dann müsste man diesen Select doch sicherlich um einen Sort-Parameter erweitern können und dann die Combobox gleich sortiert füllen.
2. Alternativ (obwohl ich die Lösung 1. für besser halte) könnte man zunächt eine ArrayList mit den Daten füllen. Diese läßt sich dann sortieren und anschließend befüllt man die Combobox aus der ArrayList.



Gruß

specci48
 

Fontanus

Member
Licensed User
Hallo @speccie48,

es gibt in SQL die ORDER BY-Klausel, mit der man die Daten nach gewünschten Kriterien sortieren und etnsprechend anzeigen lassen kann. Ich habe zumindest den Versuch gemacht die Daten mit dieser Klausel sortieren zu lassen, hat aber leider beim befüllen der ComoBox nicht funktioniert. Zumindest nicht in der Form, die ich angewendet habe. Da dies die einzige sinnvolle Variante ist, werde ich daran noch ein wenig arbeiten.
Vielen Dank schon mal für Deine Tipps.

Fontanus
 
Hi, also ich habe nur Standard-SQL-Kenntnisse, also nicht SQLite-spezifisch. Aber eigentlich müsste es so gehen (einfaches Beispiel):

SELECT * FROM Job WHERE name='paul' ORDER BY id ASC

das ASC am Ende bedeutet nur, dass aufsteigend sortiert wird. Kann man glaub ich auch weglassen. Das Gegenstück wäre halt DESC.
Hoffe das hilft ein bisschen : )
 

Fontanus

Member
Licensed User
Hallo blackwinged,

diese Möglickeit ist mir bekannt. Bisher bin ich davon ausgegangen, dass man die Daten in der ComboBox per Add Statemanet nur Datensatzweise einbringen kann. Und damit wäre natürlich die Sortierung mit der ORDER BY Option nicht mehr möglich.
Sollte es die Möglichkeit geben, quasi alle Datensätze, sortiert mit der ORDR BY Option, in die ComboBox zu übernehmen, dann bitte ich um Information, wie das geht. Diese Möglichkeit ist mir bislang nicht bekannt.

Gruß

Fontanus
 
SQLite

Hi,
ich bin jetzt auch kein basic4ppc profi, aber du liest die SQLite Daten doch Zeile für Zeile, die du vom SELECT-Query bekommst. Und die Add-Funktion der Combobox fügt den aktuellen Eintrag am Ende zur Box hinzu. Dann wäre am Ende die Sortierung doch noch vorhanden...

Oder werden zur Laufzeit mehrmals Daten eingefügt, die du dann in komplett sortiert haben möchtest?
In dem Fall kannst du für jeden einzufügenden String die Einträge einmal komplett durchlaufen und mit StrCompare prüfen, an welcher Stelle der neue Eintrag hinzugefügt werden muss. Das erledigst du dann mit Insert.

Allerdings weiß ich nicht ob bei Insert der vorherige Eintrag überschrieben wird. Falls ja musst du die Einträge noch bin zum Ende durchlaufen und jeden um eine Stelle nach hinten verschieben.

Ich denke aber die restliche Liste wird automatisch geshiftet.

Hoffe die späte Antwort hilft :)
 

Fontanus

Member
Licensed User
Neues Hallo @blackwinged,

meine Erfahrungen mit SQLite und anderen SQL-DB'n ist die, daß die Sortierung mit ORDER BY nur dann funktioniert, wenn ich eine Datenmenge > 1 Datensatz (DS) mit einem Lesevorgang entweder in eine Liste oder eine Tabelle einlese. Dann wird offensichtlich implizit mit dem Lesen der Daten die Sortierung durchgeführt und die Anzeige sieht entsprechend aus.
Beim Einfügen der Daten in die ComboBox lese ich die Daten Datensatz für Datensatz ein. Jeder DS ein Lesevorgang. Und damit ist in der Datenmenge 1 DS keine Sortierung möglich.
Mir ist momentan nicht bekannt, wie man mehr als einen DS pro ComboBox.ADD einlesen kann. Sollte es dennoch gehen, dann bitte ich um einen Hinweis. Es würde mir einige Zeilen Quellcode ersparen.

Fontanus
 
Top