- PR -

DataViewのFilterでカラム名にスペースが含まれる場合

1
投稿者投稿内容
未記入
会議室デビュー日: 2006/10/03
投稿数: 4
投稿日時: 2006-10-03 16:25
はじめまして、こんにちは。

DataViewのFilterでカラム名にスペースが含まれる場合の、
フィルターのかけ方についての質問です。

filter1 = colmun + "= 'true'"
view1.RowFilter = filter1.ToString()

このようにフィルターを行ったのですが、
colmunにスペースが含まれている場合、
エラーになってしまいます。

仮にcolmunを「ab cd」とすると、
'cd' 演算子の後にオペランドがありません。
のエラーになる。

この場合の対処方法をご存知でしたら教えてください。
よろしくお願いします。

ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2006-10-03 16:44
何かで囲う。何かは調べる。
未記入
会議室デビュー日: 2006/10/03
投稿数: 4
投稿日時: 2006-10-03 17:06
返信ありがとうございます。
私が調べたところ、ダブルクォーテーションで囲う必要があり、

filter1 = """" + colmun + "= 'true'"""";

としたところ、「;がありません。」といわれビルドエラーになり、


filter1 = "\"" + colmun + "= 'true'\"";

としたら、「位置 1 のトークン '"' を変換できません。」のエラーになってしまいました。

colmunにスペースが含まれない場合は、

filter1 = colmun + "= 'true'" ;

で、できましたのでどう記述すれば正しく実行できるのか質問させていただきました。

言語はC#を使用しています。
よろしくお願いします。
ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2006-10-03 17:15
どこを囲んでるのさ。ここまでが列名だよって教えるために囲むんだよ?
未記入
会議室デビュー日: 2006/10/03
投稿数: 4
投稿日時: 2006-10-03 17:37
すみません間違えてました。

filter1 = "\"" + colmun + "\"='true'";

このようにしたのですが、、「位置 1 のトークン '"' を変換できません。」のエラーになってしまいました。

おかしいことは間違いないのですが、どこがおかしいのでしょうか。
よろしくお願いします。
ぽぴ王子
ぬし
会議室デビュー日: 2006/03/24
投稿数: 475
お住まい・勤務地: お住まい:城・勤務地:城
投稿日時: 2006-10-03 17:40
こんにちは。

引用:

未記入さんの書き込み (2006-10-03 17:06) より:

私が調べたところ、ダブルクォーテーションで囲う必要があり、


この「ダブルクォーテーションで囲む必要がある」というのはどのあたりから得た
情報でしょうか。
もしかするとこの情報からすでに間違えてしまっている可能性があります。という
か間違っているようです。

DataView.RowFilter プロパティを MSDN で調べてみたところ

引用:

詳細については、DataColumn クラスの Expression プロパティのトピックを参照してください。


とあったので、Expression プロパティを覗いてみたところ、直接的な表現では
ありませんが、そのものズバリの回答がありました。
(ぶさいくろうさんが「何かは調べる」とおっしゃっているのであえて答えは書きませんが)

その前に、カラム名にスペースを使うのには何か理由があるのでしょうか。理由
がなければスペースを使わないという回避方法もあるかと思います。

# Expression プロパティの URL を間違えていたので修正 orz

[ メッセージ編集済み 編集者: ぽぴ王子 編集日時 2006-10-03 17:44 ]
未記入
会議室デビュー日: 2006/10/03
投稿数: 4
投稿日時: 2006-10-03 18:09
ありがとうございます。

ようやくわかりました。
MSDNをよく読んだところ、「中カッコ」とおもいっきり書いてありました。

紹介例として「"LastName = 'Jones'" 」のように書いてあったため、
てっきり「"」で囲むものだと思い込んで間違えていました。

カラムにスペースを使用するのは、変数をカラム名に指定してViewを作成するためです。

ぶさいくろう様、ぽぴ王子様、お答えいただき本当にありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)