DAOを利用してACCESSデータベースと接続する方法




・商品テーブル(sample.mdb)
ID 品名
1 テレビ
2 ラジオ
3 ステレオ
4
@[プロジェクト]−[参照設定]で”Microsoft DAO 3.5 ObjectLibrary”をチェックする。
Aコーディング
1)商品テーブルのデータをList1、List2に展開する例
Private Sub Command1_Click()
 Dim DB As Database 'データベースオブジェクト変数
 Dim RS As Recordset 'レコードセットオブジェクト変数
 'データベースを開く 
Set DB = OpenDatabase("C:\daosample\sample.mdb") 
'レコードを開く
 Set RS = DB.OpenRecordset("商品")

・RSオブジェクトの中身
ID 品名
1 テレビ
2 ラジオ
3 ステレオ
4
 
'レコード件数ループする
 Do Until RS.EOF 'レコードの終わり 
 'IDをList1に追加  
Me.List1.AddItem RS.Fields("ID") 
 '品名をList2に追加  
Me.List2.AddItem RS.Fields("品名") 
 '次のレコードに移動
  RS.MoveNext Loop
 'レコードセットオブジェクトを閉じる
 RS.Close
 Set RS = Nothing 
'データベースオブジェクトを閉じる
 DB.Close
 Set DB = Nothing
End Sub

2)IDが2以下のデータをList1、List2に展開する例
※SQLを実行するには、(1)直接SQL文を記述するか、(2)ACCESS上でクエリーを作成して、VB上からクエリーを実行する。
長所 短所
(1)直接SQL文を記述する方法 クエリー管理の手間が不要 (2)より実行速度が遅い
(2)クエリーを作成する方法 (1)より実行速度が速い クエリーが増えると管理が面倒

・直接SQL文を記述する方法

Private Sub Command1_Click() Dim DB As Database
'データベースオブジェクト変数
 Dim RS As Recordset 'レコードセットオブジェクト変数
 Dim strSQL As String 'SQL文作成用変数 'データベースを開く
 Set DB = OpenDatabase("C:\daosample\sample.mdb") 
'SQL文を作成
 strSQL = "SELECT * "
 strSQL = strSQL & "FROM 商品 "
 strSQL = strSQL & "WHERE ID <= 2 "
 'レコードを開く
 Set RS = DB.OpenRecordset(strSQL) 

・RSオブジェクトの中身
ID 品名
1 テレビ
2 ラジオ
 'レコード件数ループする
 Do Until RS.EOF 'レコードの終わりまでループ  'IDをList1に追加
  Me.List1.AddItem RS.Fields("ID")  '品名をList2に追加
  Me.List2.AddItem RS.Fields("品名")  '次のレコードに移動
  RS.MoveNext Loop
 'レコードセットオブジェクトを閉じる
 RS.Close
 Set RS = Nothing
 'データベースオブジェクトを閉じる
 DB.Close
 Set DB = NothingEnd Sub

・クエリーを使用する例
(クエリーの中身)


Private Sub Command1_Click() Dim DB As Database
'データベースオブジェクト変数
 Dim RS As Recordset 'レコードセットオブジェクト変数
 Dim QD As QueryDef 'クエリーオブジェクト 'データベースを開く
 Set DB = OpenDatabase("C:\daosample\sample.mdb")
 'クエリーを開く
 Set QD = DB.QueryDefs("特定ID以下の商品表示") 
'クエリーにパラメータを渡す
 QD.Parameters("最大ID") = 2
 'クエリーの結果レコードセットを取得する
 Set RS = QD.OpenRecordset()

・RSオブジェクトの中身
ID 品名
1 テレビ
2 ラジオ

 'レコード件数ループする
 Do Until RS.EOF 'レコードの終わり
  'IDをList1に追加
  Me.List1.AddItem RS.Fields("ID")  '品名をList2に追加
  Me.List2.AddItem RS.Fields("品名")  '次のレコードに移動
  RS.MoveNext Loop 
'レコードセットオブジェクトを閉じる
 RS.Close
 Set RS = Nothing 
'クエリーオブジェクトを閉じる
 QD.Close
 Set QD = Nothing 
'データベースオブジェクトを閉じる
 DB.Close
 Set DB = NothingEnd Sub




VisualBasicのページに戻る

Tips一覧に戻る