C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 15 を表示中)
■5390 / )  Re[9]: DATAVIEWのROWFILTERでの検索
□投稿者/ C#初心者 (10回)-(2007/07/11(Wed) 21:01:36)
No5368 (魔界の仮面弁士 さん) に返信
> # あえて、解決チェックを外した状態で投稿。
>
>
> ■No5362 (C#初心者 さん) に返信
>>どういうことでしょうか?シングルでは囲んでいますけど。
>
> そういうことではありません。テキストボックスに特殊文字が入力されていた場合の話です。
> 具体的な例を挙げてみれば、たとえば
>  filter = "(t_transmit LIKE '%送信%' )"; // 「送信」を検索
> のような内容であれば良いのですが、
>  filter = "(t_transmit LIKE '%送*信%' )"; // 「送*信」を検索 → エラー
>  filter = "(t_transmit LIKE '%送]信%' )"; // 「送]信」を検索 → エラー
> といった文字列だと、DataView の処理がエラーになってしまう、ということです。
>
> ですから、TextBox からそうした特殊な文字列が入ってきた場合に備え、
> それぞれの特殊文字に対して適切なエスケープ処理を施したさなければなりません。
>
> たとえば上記の例でいえば、処理後のフィルタの内容は、
>  filter = "(t_transmit LIKE '%送[*]信%' )"; // 「送*信」を検索
>  filter = "(t_transmit LIKE '%送[]]信%' )"; // 「送]信」を検索
> などといった結果になるでしょう。
>
> これらの特殊文字については、ヘルプで DataColumn クラスの Expression プロパティを調べると載っています。
>
>
>>はい・・・申し訳ありません。
>>ASP.NETのC#です。
> 分類の修正をお願いします。>投稿者 or 管理人s


試したところ filter = "(t_transmit LIKE '%送[]]信%' )"; // 「送]信」を検索
ではエラーになりませんでした。
filter = "(t_transmit LIKE '%送[*]信%' )"; // 「送*信」を検索
だとエラーになりました。
エスケープ文字は列名に入るとエラーが返るそうです
ワイルドカードの場合エラーが出ていました。

返信 編集キー/


管理者用

- Child Tree -