AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein FireDac & SQLite: Lower() und Upper() nicht mehr unterstützt?
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von Stewag · begonnen am 12. Feb 2024 · letzter Beitrag vom 14. Feb 2024
Antwort Antwort
Stewag

Registriert seit: 12. Jun 2008
180 Beiträge
 
Delphi 12 Athens
 
#1

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

  Alt 13. Feb 2024, 11:18
Danke Himitsu, aber ich kann dir nicht folgen.
Ich bin ja auch der Meinung, dass es mit Delphi und nicht SQLite zu tun hat.

pgDAC kenne ich nicht und .FilterSQL finde ich nicht.

Es ist doch nur ein simpler Filterausdruck, der bis D11 einwandfrei funktioniert hat.
Ich verwende ihn unter FilterChangeTracking.
Steffen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.374 Beiträge
 
Delphi 12 Athens
 
#2

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

  Alt 13. Feb 2024, 12:35
Es kann sein, dass Embarcadero die Syntax bei sich verändert hat. (im DataSet, bzw. im FireDAC)

Wie gesagt, normal hat das nichts mit SQLite oder sonsteinem verbundenem DBMS zu tun -> ganz eigene Syntax



Das, was TDataSet.Filter normalerweise kann, siehe TExprParser.GetFuncResultInfo bzw. TExprParser.TokenSymbolIsFunc in Data.DBCommon.pas
und eigentlich ist LOWER dort immernoch enthalten.
Aber wie gesagt/vermutet, ist .Filter im FireDAC-Query überschrieben und wird stattdessen eventuell LocalSQL nuzten. (das WHERE im SELECT erweitern wohl nicht, denn dann dürfte der Fehler anders klingen, wenn er aus dem DBMS käme)

Wie sieht dein Filter aus?
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (13. Feb 2024 um 12:48 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.643 Beiträge
 
Delphi 12 Athens
 
#3

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

  Alt 13. Feb 2024, 13:16
Kann es sein, dass es nicht das lower ist sondern das lowercase?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Stewag

Registriert seit: 12. Jun 2008
180 Beiträge
 
Delphi 12 Athens
 
#4

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

  Alt 13. Feb 2024, 13:38
Zitat:
Kann es sein, dass es nicht das lower ist sondern das lowercase?
Nein. Lowercase() ist die Delphi Funktion, deren Rückgabe an die Filterbedingung unter Berücksichtigung des TEdit Filter.Text übergeben wird, lower() ist die SQL Syntax, die von SQLite verarbeitet wird:

Code:
FDTable1.Filter := 'lower (Name) like ' + Quotedstr(lowercase(Filter.Text) + '%');
Hat exakt so ja auch unter D11 noch funktioniert.

Im Anhang eine SQL Abfrage mit demselben Inhalt aus "DB Browser für SQLite", die direkt auf der Datenbank läuft.
Angehängte Grafiken
Dateityp: jpg Zwischenablage02.jpg (17,7 KB, 13x aufgerufen)
Steffen

Geändert von Stewag (13. Feb 2024 um 14:01 Uhr)
  Mit Zitat antworten Zitat
Stewag

Registriert seit: 12. Jun 2008
180 Beiträge
 
Delphi 12 Athens
 
#5

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

  Alt 13. Feb 2024, 13:42
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?
Steffen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.374 Beiträge
 
Delphi 12 Athens
 
#6

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

  Alt 13. Feb 2024, 14:15
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 ( ?
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Stewag

Registriert seit: 12. Jun 2008
180 Beiträge
 
Delphi 12 Athens
 
#7

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

  Alt 13. Feb 2024, 14:21
Zitat:
Und wie isses ohne das Leerzeichen zwischen Lower und ( ?
daran liegt es leider auch nicht.
Steffen
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:26 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz