Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   FireDac & SQLite: Lower() und Upper() nicht mehr unterstützt? (https://www.delphipraxis.net/214633-firedac-sqlite-lower-und-upper-nicht-mehr-unterstuetzt.html)

Stewag 13. Feb 2024 13:42

AW: FireDac & SQLite: Lower() und Upper() nicht mehr unterstützt?
 
Zitat:

Wie sieht dein Filter aus?
na ja, hatte ich doch geschrieben:

Code:
FDTable1.Filter := 'lower (Name) like ' + Quotedstr(lowercase(Filter.Text) + '%');
Oder was meinst du?

himitsu 13. Feb 2024 14:15

AW: FireDac & SQLite: Lower() und Upper() nicht mehr unterstützt?
 
ahhh, vorhin irgendwie wieder übersehn

* Dachte grade erst das Escaping hinten bei % stimmt nicht, aber doch OK.
* Und wie isses ohne das Leerzeichen zwischen Lower und ( ?

Stewag 13. Feb 2024 14:21

AW: FireDac & SQLite: Lower() und Upper() nicht mehr unterstützt?
 
Zitat:

Und wie isses ohne das Leerzeichen zwischen Lower und ( ?
daran liegt es leider auch nicht.

QuickAndDirty 13. Feb 2024 14:48

AW: FireDac & SQLite: Lower() und Upper() nicht mehr unterstützt?
 
Geht das
Code:
FDTable1.Filter := Format(
  '''
  lower (Name) like '%0:s%%'
  ''' ,
  [Filter.Text.ToLower]
  );

EDIT:
Code:
FDTable1.Filter := Format(
  '''
  LCASE(Name) like '%0:s%%'
  ''' ,
  [Filter.Text.ToLower]
  );
TTable wandelt alles in einen Select statement um und aus deinem Filter wird
Code:
WHERE {LOWER(A.NAME)}
aus dem Filter wie Uwe Raabe ihn vorschlug wird
Code:
WHERE LCASE(A.NAME)
Hätte es nicht eigentlich umgekehrt sein müssen ? Weil LCASE das localsql makro ist?


Ich suche einen SQL Sanitizer... daher habe ich mir den preprocessor von Firedac mal angesehen ob der
missbraucht werden kann um mit parametern als sanitizer zu arbeiten bevor ich einen Unprepared SQL
abschicke mit evtl. zweifelhaftem Inhalt.

Stewag 13. Feb 2024 16:12

AW: FireDac & SQLite: Lower() und Upper() nicht mehr unterstützt?
 
...super QuickAndDirty, vielen Dank, läuft!

Eine Verbesserung ist allerdings noch nötig, da ich den Codeformatierer benutze. Dieser ändert die für die Anweisung nötige Syntax (Zeilenumbrüche & Leerzeichen).
Daher habe ich die Suchbedingung im Objektmanager einem TLabel zugewiesen. (lbFilter.Text: LCASE(Name)like '%0:s%%' or LCASE(Vorname)like '%0:s%%' or LCASE(Beschreibung)like '%0:s%%')

Damit fallen auch die vielen Hochkommata weg und aus der Filterbedingung wird einfach:
Code:
tBoote.Filter := Format(lbFilter.Text, [Filter.Text.ToLower]);

haentschman 14. Feb 2024 05:14

AW: FireDac & SQLite: Lower() und Upper() nicht mehr unterstützt?
 
Zitat:

einem TLabel zugewiesen
...warum einem TLabel und nicht einer Variable? :gruebel:

Stewag 14. Feb 2024 06:56

AW: FireDac & SQLite: Lower() und Upper() nicht mehr unterstützt?
 
Zitat:

...warum einem TLabel und nicht einer Variable?
weil die vielen Hochkommata den Aufbau der Variablen wieder ziemlich kompliziert machen würden.

himitsu 14. Feb 2024 08:35

AW: FireDac & SQLite: Lower() und Upper() nicht mehr unterstützt?
 
https://blogs.embarcadero.com/yukon-...ring-literals/

Aber ein weiterer Grund, warum die "neue" Syntax sch* ist, denn sie lässt sich nicht einzeilig nutzen, für sowas.



* in eine Ressourcendatei auslagern und von dort laden
* Außerdem gibt es Codeconverter, welche Test zu DelphiString und zurück umwandeln
* oder
* oder
* oder
Es gibt so viel, was besser ist, als ein Label die GUI zum Speichern.

Stewag 14. Feb 2024 09:23

AW: FireDac & SQLite: Lower() und Upper() nicht mehr unterstützt?
 
... mit einer Multiline String Konstanten habe ich es nicht geschafft.

Warum ist die Auslagerung in eine Ressourcendatei besser als ein unsichtbares TLabel?

himitsu 14. Feb 2024 09:25

AW: FireDac & SQLite: Lower() und Upper() nicht mehr unterstützt?
 
alles ist besser, als in der GUI :stupid:


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:53 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz