C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: DataTable同士の結合について


(過去ログ 89 を表示中)

[トピック内 7 記事 (1 - 7 表示)]  << 0 >>

■53128 / inTopicNo.1)  DataTable同士の結合について
  
□投稿者/ kz (1回)-(2010/09/03(Fri) 16:58:38)

分類:[.NET 全般] 

分類:[VB.NET] 

開発環境:VS2008 VB.NET
     SQLServer2005

お世話になります。
現在、DLLを使用してDB上のデータを取得し、
画面に表示する処理を作成しています。

DBデータ取得のDLLはテーブル単位でデータを取得して
DataTableに格納して返す処理となっています。

表示処理の際に複数のテーブルの情報を結合して
取得したい箇所があるのですが、
それぞれのDataTableに各テーブルの情報を格納後、
結合することは可能でしょうか?
(SQLでいうINNER JOINのような動きをしたい)

なお、Mergeメソッドで2つのテーブルを結合しましたが、
思ったような動作はしませんでした。
(列は2テーブル分作成されたが、各テーブルに無い列データはDBNullとなっていた)

以上よろしくお願いします。
引用返信 編集キー/
■53131 / inTopicNo.2)  Re[1]: DataTable同士の結合について
□投稿者/ 囚人 (537回)-(2010/09/03(Fri) 17:26:52)
>(SQLでいうINNER JOINのような動きをしたい)

その通りに、INNER JOIN してからDataTableに入れたらいいんじゃないです?
引用返信 編集キー/
■53133 / inTopicNo.3)  Re[2]: DataTable同士の結合について
□投稿者/ kz (2回)-(2010/09/03(Fri) 17:34:36)
No53131 (囚人 さん) に返信
> >(SQLでいうINNER JOINのような動きをしたい)
>
> その通りに、INNER JOIN してからDataTableに入れたらいいんじゃないです?

データ取得部分はDLLで行っており、DLL側は改修出来ない為
なんとか取得後のデータを結合できないものか、といった次第です。
引用返信 編集キー/
■53134 / inTopicNo.4)  Re[1]: DataTable同士の結合について
□投稿者/ 魔界の仮面弁士 (1791回)-(2010/09/03(Fri) 17:37:36)
No53128 (kz さん) に返信
> 表示処理の際に複数のテーブルの情報を結合して
> 取得したい箇所があるのですが、
> それぞれのDataTableに各テーブルの情報を格納後、
> 結合することは可能でしょうか?
> (SQLでいうINNER JOINのような動きをしたい)

いろいろな方法があると思いますが、たとえば:

(案1) DataSet の Relation を用いて結合する。
(案2) Linq を使って処理する。
(案3) 自前でループ処理。



案1 の例:

【tbl1】キー: 日付, 額面
  日付    額面   枚数
  -----  -----  ----
  09/03   1000     4
  09/03   5000     3
  09/03  10000     8

【tbl2】キー: 額面
  額面   肖像
  -----  ---------
   1000  野口英世
   2000  紫式部
   5000  樋口一葉
  10000  福澤諭吉


tbl1 と tbl2 は、共に同一 DataSet に所属しているとします。
この場合、
  ds.Relations.Add("TEST", tbl2.Columns("額面"), tbl1.Columns("額面"))
  tbl1.Columns.Add("肖像", GetType(String), "Parent.肖像")
とすると、tbl1 の内容が、

  日付    額面   枚数  肖像
  -----  -----  ----   ---------
  09/03   1000     4   野口英世
  09/03   5000     3   樋口一葉
  09/03  10000     8   福澤諭吉

となります。

引用返信 編集キー/
■53135 / inTopicNo.5)  Re[2]: DataTable同士の結合について
□投稿者/ マサヤ (140回)-(2010/09/03(Fri) 17:39:41)
囚人さんのおっしゃる通りだと思います。
しかし、DLLから取得しているDataTableだからSQLには触れられないのでしょうか?
でしたら、2つのDataTable結合用にDataTableを用意してキーになるカラムをもとに(結合ということなのであると想定)
格納するメソッドを作ったらいかがでしょうか?

引用返信 編集キー/
■53136 / inTopicNo.6)  Re[3]: DataTable同士の結合について
□投稿者/ todo (49回)-(2010/09/03(Fri) 17:40:26)
リレーション関係にあるDataTableを参照する方法
http://www1.yel.m-net.ne.jp/oss/Tips/ADO/Tips_01010.htm
引用返信 編集キー/
■53138 / inTopicNo.7)  Re[2]: DataTable同士の結合について
□投稿者/ kz (3回)-(2010/09/03(Fri) 17:45:57)
No53134 (魔界の仮面弁士 さん) に返信
> ■No53128 (kz さん) に返信
>>表示処理の際に複数のテーブルの情報を結合して
>>取得したい箇所があるのですが、
>>それぞれのDataTableに各テーブルの情報を格納後、
>>結合することは可能でしょうか?
>>(SQLでいうINNER JOINのような動きをしたい)
>
> いろいろな方法があると思いますが、たとえば:
>
> (案1) DataSet の Relation を用いて結合する。
> (案2) Linq を使って処理する。
> (案3) 自前でループ処理。
>
>
>
> 案1 の例:
>
> 【tbl1】キー: 日付, 額面
>   日付 額面 枚数
>   ----- ----- ----
>   09/03 1000 4
>   09/03 5000 3
>   09/03 10000 8
>
> 【tbl2】キー: 額面
>   額面 肖像
>   ----- ---------
>    1000 野口英世
>    2000 紫式部
>    5000 樋口一葉
>   10000 福澤諭吉
>
>
> tbl1 と tbl2 は、共に同一 DataSet に所属しているとします。
> この場合、
> ds.Relations.Add("TEST", tbl2.Columns("額面"), tbl1.Columns("額面"))
> tbl1.Columns.Add("肖像", GetType(String), "Parent.肖像")
> とすると、tbl1 の内容が、
>
>   日付 額面 枚数 肖像
>   ----- ----- ---- ---------
>   09/03 1000 4 野口英世
>   09/03 5000 3 樋口一葉
>   09/03 10000 8 福澤諭吉
>
> となります。

魔界の仮面弁士様

案1の方法を用いてサンプルを作成したところ、
イメージ通りの操作が出来ました。
ありがとうございました。

他の方もアドバイスありがとうございました。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -