Filter Data Tableでワイルドカードを利用して検索したいと思います。
マスターの列が5列あり、抽出するテーブルを変えながら抽出条件を変えながら
行いたいと考えています。
対象のテーブルの列はすべて同様ですが同一のマスターで検索したいため
検索対象外の列はワイルドカードにしたいです。
"*"としてもうまくいきません。
ご教示お願いします。
Filter Data Tableでワイルドカードを利用して検索したいと思います。
マスターの列が5列あり、抽出するテーブルを変えながら抽出条件を変えながら
行いたいと考えています。
対象のテーブルの列はすべて同様ですが同一のマスターで検索したいため
検索対象外の列はワイルドカードにしたいです。
"*"としてもうまくいきません。
ご教示お願いします。
条件でlikeって無かったでしたっけ?
あぁ、そういえばLikeではできないって書き込みが過去にあったような。。。
となると、新しい列を挿入して、LIKEの結果をフラグとして立てて、その列でフィルタを掛けるとか。。。
うぅ~んごめんなさい
Filter Data Tableでワイルドカードを利用して検索したいとありますが、HANACCHIさんの言う通り、Filter Data TableアクティビティにはLikeがないようです。
そのため正面からではなく小細工が必要かと思います。
回避策1:.netを使用する
このアクティビティとほとんど同様の効果があるものにDatatableのselectメソッドがあります。
以下が参考になるかと
※1 条件の結果0件の場合はそのままではエラーが出るので以下も参考に
※2 私の環境でもCopytoDataTableがエラーになりましたので、もしなる場合は以下を参考に
※3 条件が複数になる場合は遅くなる場合があるそうなので注意です。
回避策2:仕様を見直す
対象のテーブルの列はすべて同様ですが同一のマスターで検索したいため
検索対象外の列はワイルドカードにしたいです。
"*"としてもうまくいきません。
とありますが、これは、単純に条件としてフリーとしたいだけなのでしょうか?
もしそうなら、Filter Data Tableの列名と値を変数に格納して
Filter Data Tableの定義は以下とし
col1 = val1
and col2 = val2
and col3 = val3
and col4 = val4
and col5 = val5
全部有効の場合は
col1 = DT01.Columns(0).ColumnName
col2 = DT01.Columns(1).ColumnName
col3 = DT01.Columns(2).ColumnName
col4 = DT01.Columns(3).ColumnName
col5 = DT01.Columns(4).ColumnName
val1 = row(0).tostring
val2 = row(1).tostring
val3 = row(2).tostring
val4 = row(3).tostring
val5 = row(4).tostring
等とし、例えばcol5のみ条件を無効にしたいなら
col1 = DT01.Columns(0).ColumnName
col2 = DT01.Columns(1).ColumnName
col3 = DT01.Columns(2).ColumnName
col4 = DT01.Columns(3).ColumnName
col5 = DT01.Columns(0).ColumnName
val1 = row(0).tostring
val2 = row(1).tostring
val3 = row(2).tostring
val4 = row(3).tostring
val5 = row(0).tostring
として、条件を重ねてしまうのはいかがでしょうか。
※内容としてずれている回答であればすいません。。。