teruroom's diary

てるるーむのプログラミングダイアリー

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のIDEWindows7環境においては標準サポート保証外です。ですので自己責任で利用します。普通にWindows7Visual Studio 6.0 およびサービスパック6をインストールして利用する事が出来ています。

 

アーリーバインド(事前参照)の参照設定は以下のとおりです。一番バージョンの大きな AxtiveX Data Objects 6.1 Library を選択しました。

f:id:teruroom:20140331162602p:plain

使用するコントロールの選択は以下のとおりです。ADO Data Control と DataGrid Control を選択しましょう。

f:id:teruroom:20140331163042p:plain

この組み合わせ以外に、Data Bound Grid Control と Data Bound List Control コントロールの組み合わせでも同様の事が出来る事は確認しています。このコントロールの組み合わせの場合はDAOによる接続しか試していません。ADOでも接続出来るのかは不明です。

 

実行結果は以下のとおりです。

f:id:teruroom:20140331155629p:plain

百聞は一見にしかずですよね。Visual Basicのコードが全てを語ってくれます。ですので、解説は不要かなと思います。