German Sortierung der Daten in einer ComboBox

Discussion in 'German Forum' started by Fontanus, Sep 3, 2007.

  1. Fontanus

    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
     
  2. specci48

    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
     
  3. Fontanus

    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
     
  4. blackwinged

    blackwinged Member

    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 : )
     
  5. Fontanus

    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
     
  6. blackwinged

    blackwinged Member

    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 :)
     
  7. Fontanus

    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
     
Loading...