DOBON.NETプログラミング道掲示板
(現在 過去ログ2 を表示中)

[ 最新記事及び返信フォームをトピックトップへ ]

■33807 / inTopicNo.1)  同じデータセット内にテーブルの複製を作る方法
  
□投稿者/ べが 一般人(1回)-(2018/02/09(Fri) 14:08:24)
  • アイコン環境/言語:[OS : Windows 7 / 言語 : C# / .NET Framework : 4.5] 
    分類:[.NET] 

    【解決したい問題】

    データセット内にあるテーブルの複製を同じデータセット内に作りたいのですが、うまくいきません。
    方法が間違っていると思うのですが、調べても有効な情報が得られませんでした。
    ご教授頂ければ有難いです。

    【解決するために何をしたか】

    データセット「ds」の中にテーブル「dt1」があり、新たに「dt2」を追加して
    構造と内容を「dt1」からコピーするため、以下のようなコードを書いたのですが、

    DataTable dtTemp = ds.Tables.Add("dt2");
    dtTemp = ds.Tables["dt1"].Copy();
    ds.Tables["dt2"] = dtTemp.Copy();

    3行目の左辺で「プロパティまたはインデクサー'DatatableCollection.this[string]'は読み取り専用なので、
    割り当てることはできません。」というコンパイルエラーが出ます。
    直接的に「ds.Tables["dt2"] = ds.Tables["dt1"].Copy」にしたり、
    先に構造だけコピーを試みてCloneメソッドに変更しても同じでした。
引用返信 削除キー/
■33808 / inTopicNo.2)  Re[1]: 同じデータセット内にテーブルの複製を作る方法
□投稿者/ Hongliang 大御所(540回)-(2018/02/09(Fri) 14:17:03)
  • アイコンDataSetにDataTableを追加する場合は、.Tables.Add(DataTable)を使用します。
    なので
    > DataTable dtTemp = ds.Tables.Add("dt2");
    は不要です。

    .Tables[String] で使用する名前は、DataTableのTableNameプロパティです。
    .Tablesに格納されるDataTable間でTableNameの重複は許されていないので、.Tables.Addする前に、CopyしたDataTableのTableNameを変更しておきます。
引用返信 削除キー/
■33809 / inTopicNo.3)  Re[2]: 同じデータセット内にテーブルの複製を作る方法
□投稿者/ べが 一般人(3回)-(2018/02/09(Fri) 14:33:30)
  • アイコン回答ありがとうございます。

    回答の内容が今一つ理解できないのですが、こういう事でしょうか?
    ds.Tables.Add("dt2");
    ds.Tables["dt2"] = ds.Tables["dt1"].Copy();
    これだと先述のエラーで動きませんし、

    ds.Tables["dt1"].Copy();
    ds.Tables.Add("dt2");
    これだと、当然ながらdt2に何も入りません。


    No33808に返信(Hongliangさんの記事)
    > DataSetにDataTableを追加する場合は、.Tables.Add(DataTable)を使用します。
    > なので
    >>DataTable dtTemp = ds.Tables.Add("dt2");
    > は不要です。
    >
    > .Tables[String] で使用する名前は、DataTableのTableNameプロパティです。
    > .Tablesに格納されるDataTable間でTableNameの重複は許されていないので、.Tables.Addする前に、CopyしたDataTableのTableNameを変更しておきます。
引用返信 削除キー/
■33810 / inTopicNo.4)  Re[3]: 同じデータセット内にテーブルの複製を作る方法
□投稿者/ 魔界の仮面弁士 大御所(1106回)-(2018/02/09(Fri) 15:01:14)
  • アイコンNo33809に返信(べがさんの記事)
    >>.Tablesに格納されるDataTable間でTableNameの重複は許されていないので、.Tables.Addする前に、CopyしたDataTableのTableNameを変更しておきます。
    > 回答の内容が今一つ理解できないのですが、こういう事でしょうか?

    こういうことです。

    DataTable dt2 = ds.Tables["dt1"].Copy();
    dt2.TableName = "dt2";
    ds.Tables.Add(dt2);
引用返信 削除キー/
■33811 / inTopicNo.5)  Re[4]: 同じデータセット内にテーブルの複製を作る方法
□投稿者/ べが 一般人(4回)-(2018/02/09(Fri) 15:52:50)
  • アイコンできました!

    予備知識と読解力不足で申し訳ありませんでした。
    ありがとうございました。


    >
    > こういうことです。
    >
    > DataTable dt2 = ds.Tables["dt1"].Copy();
    > dt2.TableName = "dt2";
    > ds.Tables.Add(dt2);
解決み!
引用返信 削除キー/



トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

Mode/  Pass/


- Child Tree -