none
dataViewの使用に関して RRS feed

  • 質問

  • 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;
    }

    2006年8月13日 1:29

回答

  •  zen73 さんからの引用

    //名前のない DataTable にはバインドできません。
    dvShohin.Table = dtShohin;

    これは、dtShohin.TableNameに、適当な名前を与えてあげればよいでしょう。

     zen73 さんからの引用

    このエラーに対処するために
       dvShohin.Table = dsShohin.Tables["T_商品"];
    と変更したところ,エラーにはなりませんでしたがデータグリッドにデータは表示されませんでした。

    これは、T_商品を作成している部分のコードが見えないのですが、たぶん、dsShohin内にT_商品が存在していないのではないでしょうか?

    2006年8月13日 2:06
    モデレータ

すべての返信

  •  zen73 さんからの引用

    //名前のない DataTable にはバインドできません。
    dvShohin.Table = dtShohin;

    これは、dtShohin.TableNameに、適当な名前を与えてあげればよいでしょう。

     zen73 さんからの引用

    このエラーに対処するために
       dvShohin.Table = dsShohin.Tables["T_商品"];
    と変更したところ,エラーにはなりませんでしたがデータグリッドにデータは表示されませんでした。

    これは、T_商品を作成している部分のコードが見えないのですが、たぶん、dsShohin内にT_商品が存在していないのではないでしょうか?

    2006年8月13日 2:06
    モデレータ
  •  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;
             }

    2006年8月13日 2:44