アプリ版:「スタンプのみでお礼する」機能のリリースについて

VisualStugio.Net2003でソースコードを記述しており、コード内でSQLのSELECT文を実行して、実行結果をDataTableに格納する処理をしています。

今回、とあるテーブルに対し2パターンのSQLを実行し、それぞれの実行結果を1つのDataTableに格納したいのですが、どのようにすれば良いでしょうか?

自分で調べたところ、先に実行したSQL結果に、後から実行したSQL結果を1行ずつ追加するといった方法は見つかりましたが、1行ずつではなく、一括で追加する方法が知りたいです。

前提として、2回のSQL実行では、同じテーブルの同じ項目をSELECTしております。

下記に簡単ですがコード記述の概要を補足しておきます。

・コード記述概要
【変数宣言】
Dim DB1 As DataTable
Dim DB2 As DataTable

【SQL文1】
SELECT A,B,C FROM テーブル1 WHERE 条件文1
DB1 = SQL文1の実行結果

【SQL文2】
SELECT A,B,C FROM テーブル1 WHERE 条件文2
DB2 = SQL文2の実行結果

【DB1にDB2のデータを追加】←ここのやり方を知りたいです
DB1 = DB1 + DB2

よろしくお願いいたします。

A 回答 (2件)

こんにちは


もしご質問の内容が、詳細を知られたくなくて簡略化したものでなければ


【SQL文1】
SELECT A,B,C FROM テーブル1 WHERE 条件文1
DB1 = SQL文1の実行結果

【SQL文2】
SELECT A,B,C FROM テーブル1 WHERE 条件文2
DB2 = SQL文2の実行結果

をまとめて、
【SQL文1】
SELECT A,B,C FROM テーブル1 WHERE 条件文1 OR 条件文2
DB1 = SQL文1の実行結果
とすれば、どちらかの条件に当てはまるものを一括で取り出せます。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。

記述頂いているように、本来はSQL文1回で全部持ってくるのが一番なんですよね・・・。

今回の場合、SQL文1とSQL文2それぞれが複数のテーブルと結合しており(すみません、結合については説明をわかりやすくする為省力しておりました)、1つのSQL文にするとかなり長い記述になり、後から見た時に何をしているのかわかりづらくなることを危惧しておりました。

また、フォーム画面にラジオボタンを設置しており、ボタンAをチェックした場合はSQL文1、ボタンBをチェックした場合はSQL文2、ボタンCをチェックした場合は、SQL文1+SQL文2の結果を返す仕組みにしたかった為、あえてSQL文をわけてDatatableに格納する方策を取っておりました。

とはいえ、やはりSQL一発で結果を持ってくる方が良いと思い直しましたので、今回はUNION結合で対応したいと思います。

ありがとうございました。

お礼日時:2014/12/25 15:54

DataTable の Merge メソッドを使ってはいかがですか?



参考URL:http://msdn.microsoft.com/ja-jp/library/system.d …
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。

ご紹介頂いたMergeメソッドを試そうと思ったのですが、当方で参照設定していた.NET FRAMEWORKのバージョンが1.1ということがわかり、このバージョンではDatatable.Mergeが使えないようでした。(まさかそんな旧バージョンとは思っていませんでした・・・)

1.1でもDataset.Mergeは使えるようでしたが、かなり複雑なコードになりそうでしたので、今回はMergeメソッドの利用は諦め、SQL文でUNION結合する対応をとることにしました。

ただ、もっとバージョンが新しい.NET FRAMEWORKを利用しているプログラムも別にありますので、そこでDatatableの追加が必要な際には、ぜひMergeメソッドを利用させて貰いたいです。

ありがとうございました。

お礼日時:2014/12/25 15:33

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!