テーブルを開く / データを抽出する
「社員テーブル」の部署コードと「部門テーブル」の部署コードを連結して読み込みます。
社員テーブルは正規化をして冗長なデータは排除してあります。
しかし、社員テーブルの部署コードは数字が入力されていてどこの部署かピント来ません。
「社員テーブル」と「部門テーブル」を連結して、部課名を見やすく表示させます。
こんな感じになります。
単純に社員テーブルを読み込むには、
SELECT フィールド名1,フィールド名2, ・・・・ FROM 社員テーブル
ですが、テーブルを連結する場合は、
SELECT フィールド名1,フィールド名2, ・・・・ FROM 社員テーブル
LEFT JOIN 部門テーブル ON 社員テーブル.部署コード = 部門テーブル.部署コード
こんなふうに書きます。
更に、データを絞り込む場合には、
SELECT フィールド名1,フィールド名2, ・・・・ FROM 社員テーブル
LEFT JOIN 部門テーブル ON 社員テーブル.部署コード = 部門テーブル.部署コード
WHERE フィールド名 = ○○○○
とします。
この辺は、ListView を使ったサンプルを参考にしてください。
Public Const ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
Sub Read_Table()
Dim DB_Connect As ADODB.Connection
Dim DB_Record As ADODB.Recordset
Dim MDB_Path As String
Dim Prompt As String
Dim File種類 As String
Dim xRow As Long
Dim i As Integer
Const DB_Name = "Personnel.mdb"
File種類 = "mdb (*.mdb),*mdb"
Prompt = "「Personnel.mdb」を選択してください。"
MDB_Path = Application.GetOpenFilename(File種類, , Prompt)
Set DB_Connect = New ADODB.Connection
DB_Connect.Open ConnectionString & MDB_Path & ";"
Set DB_Record = New ADODB.Recordset
DB_Record.ActiveConnection = DB_Connect
xRow = 1
Workbooks.Add
Columns("F:F").NumberFormatLocal = "yyyy/mm/dd"
DB_Record.Source = _
"SELECT 社員番号 , 名前 , よみ , 性別 , 血液型 , 生年月日 , " + _
"部門テーブル.部門名 , 部門テーブル.課名 FROM 社員テーブル " + _
"LEFT JOIN 部門テーブル ON 社員テーブル.部署コード = 部門テーブル.部署コード "
DB_Record.Open
For i = 0 To DB_Record.Fields.Count - 1
Cells(xRow, i + 1) = DB_Record(i).Name
Next
xRow = xRow + 1
Do Until DB_Record.EOF
For i = 0 To DB_Record.Fields.Count - 1
Cells(xRow, i + 1) = DB_Record(i)
Next
DB_Record.MoveNext
xRow = xRow + 1
Loop
DB_Record.Close
Set DB_Record = Nothing
DB_Connect.Close
Set DB_Connect = Nothing
End Sub
サンプル をダウンロードして、ご使用ください。