2017-03-29 9 views
0

[charlist]を使用してSQL文のようにデータグリッドをフィルタリングしたいとします。C#DataGridView.DefaultView.RowFilter with charlist

PlantNameで "çiçek"を検索しているとします。私のSQLの選択は似ていた。

SELECT * FROM Plants WHERE PlantName LIKE %[cç][ıi][cç]ek% 

これが戻ってきました。

çiçek 
cicek 
cıcek 
çıçek 
etc.... 

DataGridView.DefaultView.RowFilterでこれを行うにはどうすればよいですか?

+1

[DataGridViewのフィルタは、細胞上の特殊記号(アクセント)、単語を無視]の可能な重複(http://stackoverflow.com/questions/34340371/datagridview-filter-ignoring-diacritics-accents- on-cells-words) –

+0

こんにちは兄さん、あなたの素早い返信をありがとう。私はこれを試しましたhttp://stackoverflow.com/a/249126/5700467それは[ıi]のための大丈夫ですが、私は5つの手紙があります。彼らは[cç]、[gğ]、[oö]、[sş]、[uü]です。 –

答えて

0

方法が見つかりました。

まず検索インデックスを作成する必要があります。たとえば、Plantsテーブルがあり、PlantNameフィールドがあります。 PlantNameの新しいフィールドにデータを入力し、トリッキーな文字の置換操作を適用します。

DataBase側。

置換(置換(置換)置換(置換)置換(置換(置換)置換(置き換え) 「I」「I」「I」「I」「I」「I」「I」「G」「」「G」) '、'、 '、'、 '、'、 '、'、 '、'、 '、' ')、' - '、' ')AS SEARCH_INDEX

C#

private string mReplace(string txt) 
    { 
     string sonuc; 
     if (txt == null) { return ""; } 
     txt = txt.Replace(" ", " "); 
     txt = txt.Replace("-", " "); 
     txt = txt.Replace("ç", "C"); 
     txt = txt.Replace("Ç", "C"); 
     txt = txt.Replace("ı", "I"); 
     txt = txt.Replace("i", "I"); 
     txt = txt.Replace("İ", "I"); 
     txt = txt.Replace("ğ", "G"); 
     txt = txt.Replace("Ğ", "G"); 
     txt = txt.Replace("ö", "O"); 
     txt = txt.Replace("Ö", "O"); 
     txt = txt.Replace("ş", "S"); 
     txt = txt.Replace("Ş", "S"); 
     txt = txt.Replace("ü", "U"); 
     txt = txt.Replace("Ü", "U"); 
     sonuc = txt.ToUpper(); 
     return sonuc; 
    } 

あなたの検索ラインでこの機能を使用してください。

DataTable1.DefaultView.RowFilter = "SEARCH_INDEX LIKE '*" + mReplace(txtPlantName.Text) + "*'"; 

http://mehmetgoldenhead.blogspot.com.tr/2017/05/ms-acces-icin-turkce-karakter-replace.html