
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
よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
ご回答ありがとうございました。
ご紹介頂いたMergeメソッドを試そうと思ったのですが、当方で参照設定していた.NET FRAMEWORKのバージョンが1.1ということがわかり、このバージョンではDatatable.Mergeが使えないようでした。(まさかそんな旧バージョンとは思っていませんでした・・・)
1.1でもDataset.Mergeは使えるようでしたが、かなり複雑なコードになりそうでしたので、今回はMergeメソッドの利用は諦め、SQL文でUNION結合する対応をとることにしました。
ただ、もっとバージョンが新しい.NET FRAMEWORKを利用しているプログラムも別にありますので、そこでDatatableの追加が必要な際には、ぜひMergeメソッドを利用させて貰いたいです。
ありがとうございました。
No.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の実行結果
とすれば、どちらかの条件に当てはまるものを一括で取り出せます。
ご回答ありがとうございました。
記述頂いているように、本来はSQL文1回で全部持ってくるのが一番なんですよね・・・。
今回の場合、SQL文1とSQL文2それぞれが複数のテーブルと結合しており(すみません、結合については説明をわかりやすくする為省力しておりました)、1つのSQL文にするとかなり長い記述になり、後から見た時に何をしているのかわかりづらくなることを危惧しておりました。
また、フォーム画面にラジオボタンを設置しており、ボタンAをチェックした場合はSQL文1、ボタンBをチェックした場合はSQL文2、ボタンCをチェックした場合は、SQL文1+SQL文2の結果を返す仕組みにしたかった為、あえてSQL文をわけてDatatableに格納する方策を取っておりました。
とはいえ、やはりSQL一発で結果を持ってくる方が良いと思い直しましたので、今回はUNION結合で対応したいと思います。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
-
DataTableに入っているデータを全てinsertしたい!(C#)
Microsoft ASP
-
VB.NET Excelを読み込んでDataTableに格納し、DBにデータをINSERTする
Microsoft ASP
-
-
4
DBから取得した値を配列へ代入する
Visual Basic(VBA)
-
5
.NET SqlDataReader のレコード有無判定
Visual Basic(VBA)
-
6
VB.NET 動的コントロールの存在確認と削除方法
Visual Basic(VBA)
-
7
CloseとDisposeの違い
Visual Basic(VBA)
-
8
Visual Basic.NETの、Form 間での引数の引渡し方法を教えてください。
Visual Basic(VBA)
-
9
VB.NETでフォーム上にExcelのような表を表示する方法
Visual Basic(VBA)
-
10
【VB】コンボボックスにデータベースから取り出した値を入れたい
Visual Basic(VBA)
-
11
FORMが開いているかどうかの確認方法
Visual Basic(VBA)
-
12
ラジオボタンの初期指定
Visual Basic(VBA)
-
13
Functionの戻り値を配列にしたいのですが
Visual Basic(VBA)
-
14
csvファイル 項目数取得
Visual Basic(VBA)
-
15
VB.NET getとsetの概念がわかりません。
Visual Basic(VBA)
-
16
2次元動的配列の第一引数のみを可変にする
Visual Basic(VBA)
-
17
DataGridViewの、選択されている行を取り出したい
Visual Basic(VBA)
-
18
別フォームから戻ったときのイベント
Visual Basic(VBA)
-
19
VBのReturnの使い方
Visual Basic(VBA)
-
20
1テーブル&複数レコードの更新に対して1度のupdate文での処理方法
SQL Server
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB.NETでDataTableにデータ追加...
-
Excel実行時エラー-2146959355?
-
エクセルVBA、ステップモードと...
-
COBOLで集団項目から符号...
-
EXCEL-VBAでコマンド...
-
ランタイム関数とは何ですか?
-
パソコンのスクリーンセーバー...
-
MFC モーダルダイアログ表示中に
-
ActiveXの更新について
-
起動したアプリケーションを最...
-
プログラム実行中に強制停止さ...
-
C言語での色設定
-
VC 砂時計表示
-
latexでのエラー
-
プロパティの値が不正ですって...
-
ラベル屋さんと言うソフトのフ...
-
VisualStudioからVScodeへの移植
-
京セラのスマホ、BASIO3をバー...
-
QMPでのメッセージ
-
iMac OS Mojave 10.14.6で iMov...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
eclipseで、「ポート番号が使用...
-
Excel実行時エラー-2146959355?
-
エクセルのVBA関数の実行す...
-
パソコンに何かが勝手にダウン...
-
エクセルVBA、ステップモードと...
-
VB.NETでボタンのクリックイベ...
-
パソコンのスクリーンセーバー...
-
管理者として実行を毎回すると...
-
PC版のMinecraftが応答なしにな...
-
latexでのエラー
-
EXCEL-VBAでコマンド...
-
プログラム実行中に強制停止さ...
-
Shell関数について
-
shell Script の実行
-
Windows10 で青鬼を遊びたいの...
-
COBOLで集団項目から符号...
-
スタートアップの削除
-
VB.NETでDataTableにデータ追加...
-
たまにマクロを実行できないと...
-
プロパティの値が不正ですって...
おすすめ情報