検索するときに 「'」を文字列として扱いたい

解決


Begi  2020-02-05 02:13:43  No: 148536  IP: 192.*.*.*

DBGridにADOQueryで条件を指定して検索の動作を作っているのです、シングルクォーテーションの時の処理がうまくできません。
具体的には、
Editボックスに名前を入力しボタンを押すことで、下記のフィルタを走らせているのですが
もし、「'」が入力されたときにこれを文字列として扱いたいです。
ADOQuery1.Filter := '名前 like ''%' + Edit.Text+ '%''';
ADOQuery1.Filtered := True;
当たり前ですが、今のままだと「'」を入力し実行すると実際には、
'%'%'
のようになり、フィルタがうまくかかりません。
これを回避し、「'」を文字列として扱う方法を教えてほしいです。

編集 削除
igy  2020-02-05 03:28:38  No: 148537  IP: 192.*.*.*

試していないですが、

ADOQuery1.Filter := '名前 like ''%' + Edit.Text+ '%''';

ADOQuery1.Filter := '名前 like ' + QuotedStr('%' + Edit.Text + '%');
にするのは、いかかですか?
(Delphi2007以前だと、QuotedStrの部分を、AnsiQuotedStrに置きかえて・・)

編集 削除
igy  2020-02-05 03:53:20  No: 148538  IP: 192.*.*.*

>ADOQuery1.Filter := '名前 like ' + QuotedStr('%' + Edit.Text + '%');

訂正です。
ADOQuery1.Filter := '名前 like ''%' + QuotedStr(Edit.Text) + '%'''; 

編集 削除
Begi  2020-02-05 05:41:16  No: 148539  IP: 192.*.*.*

出来ました!
ありがとうございました。

編集 削除