トップ回答者
dataViewの使用に関して

質問
-
dataViewの使用に関して教えていただきたいのですがよろしくお願いします。
DBの名前 Sample.mdb
テーブル名 T_商品 《接続》 ア= コードを書いて接続
イ= ウィザードを利用して接続
イをまねて,アでもやってみようと思ったのですが勝手が違って戸惑っています。dtShohin.Clear();
odaShohin.Fill(dtShohin);
//名前のない DataTable にはバインドできません。
dvShohin.Table = dtShohin;
dataGridView1.DataSource = dvShohin;
このエラーに対処するために
dvShohin.Table = dsShohin.Tables["T_商品"];
と変更したところ,エラーにはなりませんでしたがデータグリッドにデータは表示されませんでした。どの様にするとよろしいのでしょうか。お教え願います。
---------- ア -------------------------------------------------------------------
//データアクセス用のコンポーネント
private DataView dvShohin = new DataView();
private OleDbConnection ocnSample = new OleDbConnection();
private OleDbDataAdapter odaShohin = new OleDbDataAdapter();
private BindingSource bsShohin = new BindingSource();
private DataSet dsShohin = new DataSet();
private DataTable dtShohin = new DataTable();private void Form1_Load(object sender, EventArgs e)
{
//データ接続
ocnSample.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=D:\\ADO_DB\\Sample.mdb";//T_商品のデータアダプタ
odaShohin = new OleDbDataAdapter("SELECT * FROM T_商品", ocnSample);//データセットにデータを読み込む
dtShohin.Clear();
odaShohin.Fill(dtShohin);dataGridView1.DataSource = dtShohin;
}
---------- イ ------------------------------------------------------------------
//データアクセス用のコンポーネント
private DataView dvShohin = new DataView();
private SampleDataSet.T_商品DataTable dtShohin
= new SampleDataSet.T_商品DataTable();
private SampleDataSetTableAdapters.T_商品TableAdapter odaShohin
= new SampleDataSetTableAdapters.T_商品TableAdapter();private void Form1_Load(object sender, EventArgs e)
{
//データを取得
dtShohin.Clear();
odaShohin.Fill(dtShohin);
//Viewを取得
dvShohin.Table = dtShohin;//dataGridViewの設定
dataGridView1.DataSource = dvShohin;
}
回答
-
zen73 さんからの引用
//名前のない DataTable にはバインドできません。
dvShohin.Table = dtShohin;これは、dtShohin.TableNameに、適当な名前を与えてあげればよいでしょう。
zen73 さんからの引用
このエラーに対処するために
dvShohin.Table = dsShohin.Tables["T_商品"];
と変更したところ,エラーにはなりませんでしたがデータグリッドにデータは表示されませんでした。これは、T_商品を作成している部分のコードが見えないのですが、たぶん、dsShohin内にT_商品が存在していないのではないでしょうか?
すべての返信
-
zen73 さんからの引用
//名前のない DataTable にはバインドできません。
dvShohin.Table = dtShohin;これは、dtShohin.TableNameに、適当な名前を与えてあげればよいでしょう。
zen73 さんからの引用
このエラーに対処するために
dvShohin.Table = dsShohin.Tables["T_商品"];
と変更したところ,エラーにはなりませんでしたがデータグリッドにデータは表示されませんでした。これは、T_商品を作成している部分のコードが見えないのですが、たぶん、dsShohin内にT_商品が存在していないのではないでしょうか?
-
trapemiya さんからの引用 dtShohin.TableNameに、適当な名前を与えてあげればよいでしょう。
いつもすばやい対応,ありがとうございます。おかげさまでうまくいきました。
private void Form1_Load(object sender, EventArgs e)
{
//データ接続
ocnSample.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;"
+ "Data Source=D:\\ADO_DB\\Sample.mdb";//T_商品のデータアダプタ
odaShohin = new OleDbDataAdapter("SELECT * FROM T_商品", ocnSample);
dtShohin.TableName = "T_商品";
//データセットにデータを読み込む
dtShohin.Clear();
odaShohin.Fill(dtShohin);//Viewを取得
dvShohin.Table = dtShohin;//dataGridViewの設定
dataGridView1.DataSource = dvShohin;
}