Access2010または2007のテーブルにVisualBasic6.0 の DataGrid とADO Data Connection コントロールで接続する方法
Private Sub Command1_Click()
Dim AccessConnect_ACE As String
AccessConnect_ACE= _
"Provider=Microsoft.ACE.OLEDB.12.0;"& _ "Data Source=C:\Users\User001\Documents\ノースウィンド.accdb;"
Dim con AsNew ADODB.Connection
con.ConnectionString = AccessConnect_ACE
'【重要】CursorLocationプロパティの設定
'ACEベースでAccess2007/2010データベースにアクセスする際に
'必須のプロパティです
con.CursorLocation = adUseClient
cnNWind.Open
Dim stQuery As String '【注意】フィールド名「受注日」をリテラル「'」で囲って「'受注日'」などの様に
'指定するとうまく受注日の昇順に並び替えが行われません。リテラルはつけずに
'そのまま指定しましょう
stQuery = "SELECT * FROM 社員、日付別商品売上数量 ORDER BY 受注日 ASC"
Dim cmd AsNew ADODB.Command
With cmd Set .ActiveConnection = con .CommandType = adCmdText .CommandText = stQuery End With
Dim rs AsNew ADODB.Recordset.
With rs .LockType = adLockPessimistic .CursorType = adOpenKeyset .Open cmd End With
Set Adodc1.Recordset = rs If rs.RecordCount > 0 Then
Adodc1.Refresh
Adodc1.Records6et.MoveLast
Adodc1.Recordset.MoveFirst
End If
Set DataGrid1.DataSource = Adodc1
DataGrid1.Refresh
End Sub
Visual Basic 6.0、Access2010、Windows7 SP1環境にてビルドします。
Visual Basic 6.0のIDEはWindows7環境においては標準サポート保証外です。ですので自己責任で利用します。普通にWindows7にVisual Studio 6.0 およびサービスパック6をインストールして利用する事が出来ています。
アーリーバインド(事前参照)の参照設定は以下のとおりです。一番バージョンの大きな AxtiveX Data Objects 6.1 Library を選択しました。
使用するコントロールの選択は以下のとおりです。ADO Data Control と DataGrid Control を選択しましょう。
この組み合わせ以外に、Data Bound Grid Control と Data Bound List Control コントロールの組み合わせでも同様の事が出来る事は確認しています。このコントロールの組み合わせの場合はDAOによる接続しか試していません。ADOでも接続出来るのかは不明です。
実行結果は以下のとおりです。
百聞は一見にしかずですよね。Visual Basicのコードが全てを語ってくれます。ですので、解説は不要かなと思います。