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

解決


Begi  2020-02-05 11:13:43  No: 148536

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


igy  2020-02-05 12:28:38  No: 148537

試していないですが、

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

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


igy  2020-02-05 12:53:20  No: 148538

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

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


Begi  2020-02-05 14:41:16  No: 148539

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


※返信する前に利用規約をご確認ください。








  このエントリーをはてなブックマークに追加