dポイントプレゼントキャンペーン実施中!

C#からAccessデータベースを呼び出し、それをDataGridViewに表示しました。
その上で、条件に合うレコードのみを表示するコードを書こうとしました。

元のAccessのフィールドにはテキスト型のデータが入っています。

        DataView dView;
dView = new DataView(dSet.Tables["t_" + (テーブル名)]
, "フィールド名=" + (文字列型変数), "", DataViewRowState.CurrentRows);
dataGridView.RowHeadersVisible = false;
this.dataGridView2.DataSource = dView;

これをデバッグすると、2行目で、EvaluateExceptionはハンドルされませんでした。というエラーが出ます。
列[「(文字列型変数)]は見つかりません」という内容です。
これを回避して、フィールドに特定の文字列が入っているレコードを抽出して、DateGridViewに表示させる
方法はないでしょうか。
ちなみに数値型のレコードを抽出することはできているレベルです。

また、フィールドに日付が入っているような場合、ある期間内のレコードを抽出するやり方を
ご存知のかたがおりましたら、お教え願います。
(直接のやり方でなくても、「この本が良い」というようなアドバイスでも大いに助かります)。

どうかよろしくお願いします。

A 回答 (2件)

.NET Frameworkのバージョンは書きましょう。




 dView = new DataView(dSet.Tables["t_" + (テーブル名)]
 , "フィールド名=" + (文字列型変数), "", DataViewRowState.CurrentRows);
この書き方だとDataViewコンストラクタの第2引数(rowFilter)が
 "フィールド名=hoge"
という式になりますが、
これは「フィールド名という列とhogeという列の値が等しい行を抽出する」という意味になります。
従って、テーブルにhogeという列が存在しないとエラーになります。

 "フィールド名='hoge'"
という式になるように、
 dView = new DataView(dSet.Tables["t_" + (テーブル名)]
 , "フィールド名='" + (文字列型変数) + "'", "", DataViewRowState.CurrentRows);
としてみてください。


rowFilterの書き方は以下のページにて説明されています。
http://msdn.microsoft.com/ja-jp/library/system.d …
http://msdn.microsoft.com/ja-jp/library/system.d …
    • good
    • 0
この回答へのお礼

ありがとうございました。
無事にデバッグ出来ました。
詳しいアドバイスもつけていただき助かりました。。。

お礼日時:2013/08/07 14:33

文字って前後に ' をつける必要がありませんでしたっけ?



"フィールド名='" + (文字列型変数) + "'"

みたいな感じで。。。。
⇒違っていたらスル~してください。
    • good
    • 0
この回答へのお礼

ありがとうございました。
おっしゃるとおり、`(文字列変数)`でデバッグできました。

お礼日時:2013/08/07 14:31

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!