• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:DataTableから条件を満たした行を別のDatatableへコピーしたい)

DataTableから条件を満たした行を別のDatatableへコピーしたい

このQ&Aのポイント
  • VC#2005とSQLServer2005ExpressEditionでWindowsアプリケーションを作成しています。データベースの中から1つのマスタテーブルのデータを呼び出すのにTableAdapterを使ってDataTableにデータをバインドしました。
  • DataTableにはカラムが3列あり、その中の1列をグループIDとしています。条件としてはグループIDが同じであるということです。
  • 条件を満たしている行をすべて抽出して空のデータテーブルにコピーすることです。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

C#だったんですね … さほど変わりないと思いますが お使いのコードが提示されていないのでこちらで適当な変数をでっち上げております 現在お使いのコードを支障の無い範囲で提示しましょう //元のデータテーブルがdtSourceとすると // テーブル構造をコピー DataTable dt = dtSource.Clone(); DataRow r = null; foreach( DataRow dtRow in dtSource.Select("選択するための文字列")) {   r = dt.NewRow();   for( int n = 0; n < dtRow.ItemArray.Length; n++ )   {     r[n] = dtRow[n];   }   dt.Rows.Add( r ); } といった具合になると思います # 前回の投稿中のstSorceはdtSourceの単なるミスです

kobupon
質問者

お礼

> C#だったんですね … さほど変わりないと思いますが 質問の最初に書いたんですが、わかりにくかったでしょうか。 すいません、今後質問するときはもっとわかりやすく書くよう努めます。 今回のはかなり参考になりました。ありがとうございます。 今度はforeach( DataRow dtRow in dtSource.Select("選択するための文字列"))の("選択するための文字列")で詰まってしまいました。 実際にはその位置にint型の変数を入れたかったのです。 実行すると例外が返ってきたり実行時エラーになったりで結構はまってしまいましたが("比較するカラム名 =" + 変数名)で上手くいきました。 これで何とか次の状態遷移に移れそうです。 ありがとうございました。

その他の回答 (1)

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

ソースのDataTableのCloneメソッドでテーブル構造をコピーして SelectメソッドでRowコレクションを取得 これを For Eachでループしてやればコピーできますよ   dim dt as DataTable   dim r as DataRow   dt = dtSource.Clone   for each rowSource DataRow in stSource.Select( "選択対象列=選択データ")     r = dt.NewRow     for n as integer = 0 to rowSource.ItemArray.Length - 1       r(n) = rowSource(n)     next     dt.rows.add( r )   next といった具合でしょう

kobupon
質問者

補足

せっかくソースを書いて頂いてますが、VBみたいですね。 VBでは「rowSource」や「stSource」をいった宣言外のものが使えるんでしょうか? 私はVBはわからないのですが、これはちょっと応用できそうにありません。 ありがとうございました。