German B4J DB durchsuchen, Groß/Kleinschreibung nicht beachten

manhof

Member
Licensed User
Longtime User
Hallo,

in B4A habe ich eine DB mit einem Suchbegriff (Textbox) durchsucht, hier zeigte die Suche alles an:
B4X:
Cursor1 = SQL.ExecQuery("SELECT title, subtitle FROM table where keyword LIKE '%" & suche.text & "%' ORDER by title")
Nun gibt es bei B4J keine Cursor und ich habe die DBUtil benutzt:
B4X:
DBUtils.ExecuteTableView(SQL1, "SELECT title, subtitle FROM table where keyword LIKE '%" & suche.text & "%' ORDER by title", Null, 0, table1)
Bei einer Suche von Hallo findet er den Eintrag Hallo, bei einer Suche mit hallo findet er nichts.
Gibt es hierzu Parameter etc?

Danke!
 

specci48

Well-Known Member
Licensed User
Longtime User
Hallo Manfred,

die Suche funktioniert einwandfrei ohne Berücksichtigung der Gross-/Kleinschreibung.
Ist eventuell dein Suchbegriff falsch? Hast du vielleicht versehentlich bei der Suche ein zusätzliches Leerzeichen eingegeben?

Anbei nochmal ein kleines Beispiel als "Beweis"... :)

Gruß
specci48
 

Attachments

  • Test-DB.zip
    5.5 KB · Views: 274

manhof

Member
Licensed User
Longtime User
Hallo Specci48,

vielen Dank für deine Mühe.
Hast ein umfangreiches Beispiel gemacht. Toll.
Das klappt auch.
Dumm von mir, da ich Hallo als Beispiel genommen habe.
Ich habe dein Beispiel ausprobiert, du hast keine db mit reingepackt.
Nun habe ich dazu eine DB erstellt und die zwei Begriffe Öl und ölen eingetragen. Nun klappt es nicht mehr.
Mit Hallo und hallo funktioniert es. Das Problem ist das Sonderzeichen.

Das funktioniert allerdings beim B4A mit dem Cursor.
Wie könnte ich das lösen? Das ö in der Suche umwandeln?
 

rwblinn

Well-Known Member
Licensed User
Longtime User
Versuch mal:

B4X:
Dim query As String = "Select Field1 AS Bezeichnung FROM TestTable WHERE Field1 LIKE ?"
DBUtils.ExecuteTableView(mySQL, query, Array As String($"%${TextField1.Text.Trim}%"$), 0, TableView1)
 

specci48

Well-Known Member
Licensed User
Longtime User
Ich habe dein Beispiel ausprobiert, du hast keine db mit reingepackt.
Sorry, der "Export As Zip" hat meinen Objects-Ordner nicht mitgenommen...

Das Problem ist das Sonderzeichen.
Okay, mit Sonderzeichen habe ich auch meine Probleme. Hier kenne ich leider auch keine "echte" Lösung.

Was steht denn bei dir in der DB drin wenn du dir die Daten z.B. mit einem DatabaseBroser anschaust?
In meinem Fall sehe ich im DatabaseBroser ein � statt einem Umlaut. Mein Workaround läuft jetzt so, dass ich alle Umlaute aus dem Suchbegriff in ein � umwandle und erst dann die SQL-Suche durchführe. Auf diese Weise werden alle Daten gefunden, die an der betreffenden Stelle ein � haben. Ggf. findet man zu viele Treffer, aber das gewünschte ist zumindest dabei.
Beispiel:
Suchbegriff "Grönland" umwandeln in "Gr�nland", damit finde ich dann "Grönland", aber - sofern vorhanden - auch "Grünland", "Gränland", usw.
 

mw71

Active Member
Licensed User
Longtime User
Abend zusammen,

ich hab grad noch mal bei mir im Projekt angesehen (B4A, aber SQLite dürfte das gleiche sein?), da mache ich das etwa folgendermaßen:

B4X:
query=("SELECT title, subtitle FROM table WHERE keyword LIKE '%" & suche.text & "%' COLLATE NOCASE ORDER by title")

da ich mir das als HTML Tabelle anzeigen lasse sieht die Abfrage dann so aus (geht aber genau so mit deiner DBUtils abfrage):
B4X:
WebView2.LoadHtml(DBUtils.ExecuteHtml(SQL1, query, Null, 0, True))

funktioniert bei mir mit Groß/Kleinschreibung und auch mit Umlauten.
 

specci48

Well-Known Member
Licensed User
Longtime User
(B4A, aber SQLite dürfte das gleiche sein?)
Nur die Datenbank ist identisch, aber die jeweilige Zugriffsimplementierung nicht. Hier entsteht ja gerade das Problem zwischen B4A und B4J.
 

manhof

Member
Licensed User
Longtime User
klappt leider nicht.
da mein Suchfeld keyword nicht angezeigt wird, sondern nur die suchbegriffe beinhaltet,
werde ich wohl da alle Begriffe "kleinschreiben" und die Suche in lowcase umwandeln.
Dann sollte es auf jendenfall klappen.
Danke an alle.
 

specci48

Well-Known Member
Licensed User
Longtime User
...werde ich wohl da alle Begriffe "kleinschreiben" und die Suche in lowcase umwandeln.
Dann sollte es auf jendenfall klappen.
Danke an alle.
Sorry wenn ich das Thema nochmal aufgreife, aber in Post #3 hast du gesagt, das Problem wären die Umlaute, nicht die Gross-/Kleinschreibung. :confused:
 
Top