German Suchbox problem

Fox

Active Member
Licensed User
Longtime User
Hallo ich habe im offziellen Update und Question Thread schonmal nachgefragt jedoch ohne wirklichen erfolg. Also mein problem ist folgendes.. Ich habe eine Suchbox welche mir aus meiner Liste die Sucheinträge anzeigt. Nur mein problem ist folgendes... Wenn ich einen buchstaben suche wählt er nur den anfangsbuchstaben welche in die suche mit einbezogen wird.

Sub Searchbox_TextChanged (Old As String, New As String)
Cursor = ST.ExecQuery("Select DISTINCT * FROM database WHERE music or artist like '%" & Searchbox.Text & "%' ORDER BY 'Music';")
lvNames.Clear
For i = 0 To Cursor.RowCount - 1
Cursor.Position = i
lvNames.AddSingleLine(Cursor.GetString(db))
Next
Cursor.Close
End Sub

Wie kann ich das ändern das alle Suchstrings berücksichtigt werden?

beste Grüße
 

JOTHA

Well-Known Member
Licensed User
Longtime User
Hallo Fox,

So müsste es gehen:
B4X:
Cursor = ST.ExecQuery("Select * FROM database WHERE music or artist like '%"&Searchbox.Text&"%' GROUP BY Music")
... kopiere den Code einfach 1:1 in deinen Code.

Du kannst DISTINCT weglassen, wenn Du anstatt ORDER BY --> GROUP BY schreibst, das verhindert auch die doppelte Anzeige von deiner "Music".

Schreibst Du gerade an einer Musikdatenbank?
 

Fox

Active Member
Licensed User
Longtime User
Hallo Fox,

So müsste es gehen:
B4X:
Cursor = ST.ExecQuery("Select * FROM database WHERE music or artist like '%"&Searchbox.Text&"%' GROUP BY Music")
... kopiere den Code einfach 1:1 in deinen Code.

Du kannst DISTINCT weglassen, wenn Du anstatt ORDER BY --> GROUP BY schreibst, das verhindert auch die doppelte Anzeige von deiner "Music".

Schreibst Du gerade an einer Musikdatenbank?

ohhh das ist ja klasse vielen vielen dank :) ja schreibe ich aber nichts irgendwie kommerzielles da ich absoluter anfänger bin und eigentlich das ganze mache zum lernen und zum begreifen vom code ich bin doch mehr der grafik boy :)
 

JOTHA

Well-Known Member
Licensed User
Longtime User
... mit der Funktion "_TextChanged" wird die Suche ja sofort nach Eingabe von nur einem einzigen Buchstaben gestartet.

Wenn die Datenbank sehr groß wird (bei Musik ist das ja wahrscheinlich), dauert die Suche aber jedesmal auch sehr lange.

Deshalb habe ich neben dem Suchtext einen SuchBUTTON, dadurch kann ich mehrere Buchstaben eingeben, bevor die Suche losgeht.

Wieviele Datensätze hast Du momentan?

P.S.: Wenn ich die Funktion "_TextChanged" verwende, stürzt mir die App manchmal ab, passiert Dir das auch gelegentlich bei dieser Funktion?
 

Fox

Active Member
Licensed User
Longtime User
... mit der Funktion "_TextChanged" wird die Suche ja sofort nach Eingabe von nur einem einzigen Buchstaben gestartet.

Wenn die Datenbank sehr groß wird (bei Musik ist das ja wahrscheinlich), dauert die Suche aber jedesmal auch sehr lange.

Deshalb habe ich neben dem Suchtext einen SuchBUTTON, dadurch kann ich mehrere Buchstaben eingeben, bevor die Suche losgeht.

Wieviele Datensätze hast Du momentan?

P.S.: Wenn ich die Funktion "_TextChanged" verwende, stürzt mir die App manchmal ab, passiert Dir das auch gelegentlich bei dieser Funktion?

Im moment habe ich 2309 Datensätze tendenz steigend also meinst du ich sollte die TextChange sache weg machen und einen Suchbutton dafür nehmen... Muss ja den code eigentlich nur in ein Click Ereigniss kopieren...

hast du eine möglichkeit wie man die groß und kleinschreibung berücksichtigt?
 
Last edited:

JOTHA

Well-Known Member
Licensed User
Longtime User
Im moment habe ich 2309 Datensätze tendenz steigend also meinst du ich sollte die TextChange sache weg machen und einen Suchbutton dafür nehmen... Muss ja den code eigentlich nur in ein Click Ereigniss kopieren...

hast du eine möglichkeit wie man die groß und kleinschreibung berücksichtigt?

1) Mit einem Button hast Du noch zusätzlich die Möglichkeit, die Tastatur automatisch beim Start der Suche auszublenden und damit hast Du viel mehr Platz für die Anzeige der Daten.

2) Den ganzen Text in Großbuchstaben umwandeln geht mit "ToUpperCase"
 

Fox

Active Member
Licensed User
Longtime User
1) Mit einem Button hast Du noch zusätzlich die Möglichkeit, die Tastatur automatisch beim Start der Suche auszublenden und damit hast Du viel mehr Platz für die Anzeige der Daten.

2) Den ganzen Text in Großbuchstaben umwandeln geht mit "ToUpperCase"

tastatur automatisch auszublenden ? wie geht das dann?
 

JOTHA

Well-Known Member
Licensed User
Longtime User
tastatur automatisch auszublenden ? wie geht das dann?

'------ die Tastatur automatisch ausblenden ------
Dim PhoneTastaturAusblenden As Phone
PhoneTastaturAusblenden.HideKeyboard(Activity)

Du brachst dazu die PHONE-Library (im Forum kostenlos unter Librarys heruntrladen und in deinen Library-Ordner kopieren).
 

Fox

Active Member
Licensed User
Longtime User
'------ die Tastatur automatisch ausblenden ------
Dim PhoneTastaturAusblenden As Phone
PhoneTastaturAusblenden.HideKeyboard(Activity)

Du brachst dazu die PHONE-Library (im Forum kostenlos unter Librarys heruntrladen und in deinen Library-Ordner kopieren).

ohhh dankeschön :)

aber irgendwie klappt meine suche per button nicht richtig.. hmmm ich glaube ich muss nochmal nach dem code schauen...
 

JOTHA

Well-Known Member
Licensed User
Longtime User
ohhh dankeschön :)

aber irgendwie klappt meine suche per button nicht richtig.. hmmm ich glaube ich muss nochmal nach dem code schauen...

Klappt denn die Suche ohne Button?
 

Fox

Active Member
Licensed User
Longtime User
Klappt denn die Suche ohne Button?

ja also ohne button gehts .. hmmm also im moment klappt es aber ich probiere immer mit dem emulator... also damit geht es net... nur mitm telefon ;)
 
Last edited:

JOTHA

Well-Known Member
Licensed User
Longtime User
ja also ohne button gehts .. hmmm also im moment klappt es aber ich probiere immer mit dem emulator... also damit geht es net... nur mitm telefon ;)

Ich glaube trotzdem nicht, das in deinen beiden Suchfeldern gesucht wird und somit kommt auch kein korrektes Ergebnis raus.

Dein Code sucht mit "OR", aber diese Suche muß 2 x benannt werden, dann stimmt das Ergebnis! ;)

So muss es aussehen:
B4X:
Cursor = ST.ExecQuery("SELECT * FROM database WHERE music LIKE '%"&Searchbox.Text&"%' OR artist LIKE '%"&Searchbox.Text&"%' GROUP BY Music")

Ich schreibe die Befehle immer in Großbuchstaben, das erleichtert die Übersicht im Code. ;)

Kopiere den Code in deine app und kontrolliere, ob tatsächlich bei "artist" oder (das soll ja der befehl OR bezwecken) bei "music" (also bei beiden) etwas gefunden wird.
 

Fox

Active Member
Licensed User
Longtime User
Ahhh ich depp... habe eine falsche zeile in der datenbank angesteuert so kann das auch nix werden :)
 

JOTHA

Well-Known Member
Licensed User
Longtime User
Ahhh ich depp... habe eine falsche zeile in der datenbank angesteuert so kann das auch nix werden :)

Meintest Du "Spalte", oder ?
 

Fox

Active Member
Licensed User
Longtime User
Meintest Du "Spalte", oder ?

ja ;) ich habe die falsche spalte angesteuert ;)

sag mal weißt du wie man den letzten eintrag aus einer Datenbank auslesen kann und diesen nur als beispiel mal in einer Messagebox wiedergeben kann?
 
Top