SQLの基本的なコードパターン
パターン | 内容 |
---|---|
結果セットを返すパターン | レコードの抽出や結合を行い、その結果を受け取って利用する時に使用する。 |
結果セットを返さないパターン | データベース側の内容を変更し、その結果を受け取る必要がないパターン。 テーブル内のフィールドを変更したり、テーブルを作成したりする場合に使用する。 |
結果セットを返すパターン
必要とするレコードのみを抽出して、その結果を利用する場合のパターン。
いわゆる「選択クエリ」に相当する。
Sub SQL実行パターン1_1() Dim myCon As New ADODB.Connection, myRS As New ADODB.Recordset Dim mySrc As String, mySQL As String Dim i As Integer, j As Integer '接続先データベース mySrc = ThisWorkbook.Path & "\mdb\4-sampleDB.mdb" '実行するSQL mySQL = "select * from 社員 where 所属 = '営業1課';" '接続 With myCon .Provider = "Microsoft.Jet.OLEDB.4.0;" .Open mySrc End With 'レコードセットを取得 myRS.Open mySQL, myCon '結果を使った処理 Range("A1").CopyFromRecordset myRS myRS.Close: Set myRS = Nothing myCon.Close: Set myCon = Nothing End Sub
フィールド名も転記するパターン
Sub SQL実行パターン1_2() Dim myCon As New ADODB.Connection, myRS As New ADODB.Recordset Dim mySrc As String, mySQL As String Dim i As Integer, j As Integer '接続先データベース mySrc = ThisWorkbook.Path & "\mdb\4-sampleDB.mdb" '実行するSQL mySQL = "select * from 社員 where 所属 = '営業1課';" '接続 myCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & mySrc 'レコードセットを取得後、フィールドを含めて転記 With myRS .Open mySQL, myCon For i = 0 To .Fields.Count - 1 Range("A1").Offset(0, i) = .Fields(i).Name Next Range("A2").CopyFromRecordset myRS End With myRS.Close: Set myRS = Nothing myCon.Close: Set myCon = Nothing End Sub