MDBファイルからレコードを読み込み、
データグリッド・フォームに内容を表示させるアプリを作成しています。
■前提
MDBにBOOK_NAMEというテーブルがありました。
しかし、BOOK_NAMEのレコード数が増えて、
ファイルのサイズが2GBを超えてしまいそうになったため、
一部のデータを別のMDB_2に移すことになりました。
アプリはBOOK_NAMEをみてデータの抽出を行っておりました。
今回テーブルが増えてしまいましたが、アプリのロジックは変えずに、
下記のようなクエリ(BOOK_NAME)を作成して、
データ抽出の際はそのクエリを見に行くようにしたいです。
また、クエリ「BOOK_NAME」を中心に、
WRITER_NAME_1等を結合してデータの抽出を行いたいと思っております。
SQL
1SELECT * FROM ( 2SELECT * FROM BOOK_NAME_1 3UNION ALL 4SELECT * FROM BOOK_NAME_2 5) AS BOOK_NAME
■質問
ACCESSからは、クエリとテーブルを一つのSQL文で扱うことができますが、
VB.NET上から同様の処理は可能でしょうか。
SQL
1SELECT ID, TITLE, WRITER 2FROM BOOK_NAME 3LEFT JOIN WRITER_NAME_1 ON BOOK_NAME.WRITER_ID = WRITER_NAME_1.WRITER_ID 4
下記のような作りで、VB.NET上からクエリを呼び出せることは確認しております。
VB.NET
1Dim strID As String = "" 2Dim strNAME As String = "" 3Dim strSql As String 4Dim con As New OleDb.OleDbConnection() 5Dim cmd As New OleDb.OleDbCommand() 6 7con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= D:\MDB_1.mdb;" 8 9' コネクションの設定 10cmd.Connection = con 11' DB接続 12con.Open() 13 14' テーブルからレコードデータを取得する 15strSql = "Execute BOOK_NAME" 16cmd.CommandText = strSql 17 18Using dr As OleDb.OleDbDataReader = cmd.ExecuteReader() 19' 取得レコード有無チェック 20If dr.HasRows = True Then 21' レコードが取得できた時の処理 22dr.Read() 23strID = dr.GetValue(0) 24strTITLE = dr.GetValue(1) 25End If 26End Using
■開発環境
・作成アプリケーションの種類:Windowsフォーム
・開発環境:Windows7 64bit/Visual Studio Professional 2012 /.NET Framework 4
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。