![]() |
AW: ClientDataSet mit zwei Filtern
Was erwartest du denn bei
Delphi-Quellcode:
?
Memo1.Text := 'WHERE feld = ' + QuotedStr('Das ist ein Text mit '' und \ drin');
Code:
Bestimmt was Anderes als ich.
Input: WHERE feld = Das ist ein Text mit " , ' und \ drin
Pascal (QuotedStr: WHERE feld = 'Das ist ein Text mit " , '' und \ drin' SQL (EscapeValue): WHERE feld = 'Das ist ein Text mit " , \' und \\ drin' SQL (EscapeName): WHERE feld = "Das ist ein Text mit \" , ' und \\ drin" FilterText erwartet einen Text nach der Definition für SQL-Strings. QuotedStr erzeugt aber einen Text nach der Definition für Pascal-Strings. Und die sind nicht kompatibel, wenn es um Steuerzeichen geht. |
AW: ClientDataSet mit zwei Filtern
OK - Danke !
Das wusste ich natürlich nicht. Hans |
AW: ClientDataSet mit zwei Filtern
@himitsu:
Zitat:
![]()
Delphi-Quellcode:
with ADODataSet1 do begin
Filtered := False; Filter := 'State = ' + QuotedStr('CA') + ' OR ' + 'State = ' + QuotedStr('CA'); Filtered := True; end; |
AW: ClientDataSet mit zwei Filtern
Nur weil in der Doku etwas Falsches drin steht, heißt es noch lange nicht, dass es richtig ist. :angle2:
Wie gesagt, QuotedStr hat ein anderes Verhalten beim Quoting/Escaping, welches nicht zu einem SQL-Statement passt. Leider bringt Delphi nativ keine passenden SQL-Funktionen dafür mit, was auch ein bisschen verständlich ist, da es je nach DBMS/Dialekt leichte Unterschiede gibt. (wenn man damit sein SELECT zusammenbauen wöllte) Aber bezüglich DataSet.Filter weiß ich jetzt nicht, ob das wirklich vom DBMS abhängt ... scheint ja meinstens nur eine Implementation im Delphi zu sein, welches eine ![]() So lange keine Steuerzeichen oder irgendwas exotisches verwendet wird, also praktisch nur ASCII ohne ' / " und ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:44 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