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オブジェクトの中身
'レコード件数ループする
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オブジェクトの中身
'レコード件数ループする
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一覧に戻る