|

|
|
 |
2.3 テーブルやクエリーのオープン |
 |
|
|
|
|
|
DAOを使って、自分自身(データベース)内にあるテーブルやクエリーをオープン・クローズする方法です。オープン(レコードセットオブジェクトの作成)は、レコードセットオブジェクトの作成が基本ですが、Access97までとAccess2000以降ではほんの少し記述が異なるので注意。
クローズ時はどのバージョンでも同じで、レコードセットオブジェクトの.Closeというメソッドを実行します。
|
|
|
|
|
|
| Access2000以降でのオープン、クローズの例 |
|
|
|
|
まずは、Access2000以降の例です。例では、DAOを使い「住所録テーブル」というテーブルのレコードセットオブジェクトを作成(テーブルのオープン)し、その後クローズしています。太字と下線の部分がポイントで、詳しくはソースコード以下の説明をどうぞ。
Sub prcRecordsetOpenClose2000()
'Access VBA Tips
'2.3 テーブルのオープンとクローズ
'Access2000以降での手順
Dim daoDB As DAO.Database
Dim daoRS As DAO.Recordset
'データベースのオープン(データベースオブジェクトの作成)
Set daoDB = CurrentDb
'テーブルのオープン(レコードセットの作成)
Set daoRS = daoDB.OpenRecordset("住所録テーブル", dbOpenDynaset)
'テーブルのクローズ
daoRS.Close
'データベースのクローズ
daoDB.Close
End Sub
|
※Access2000以降の場合。ただし、参照設定が必要です。
■Dim daoRS As DAO.Recordset
DAOレコードセットオブジェクト用の変数の宣言です。例では変数名にdaoRSという名前にしていますが、ここは好きな名前でかまいません。型にはDAO.Recordsetを指定します。
■Set daoRS = daoDB.OpenRecordset(@, A)
DAOを使ってテーブルやクエリーをオープンするときは、データベースオブジェクトの.OpenRecordsetというメソッドを実行します。@のところへ、テーブル名、クエリー名またはSELECT文(SQL)を指定しましょう。なお、例ではテーブル名(住所録テーブル)を指定しています。
※OpenRecordsetにSELECT文(SQL)を書いた例
'テーブルのオープン(レコードセットの作成)
Set daoRS = daoDB.OpenRecordset("select * from 住所録テーブル", dbOpenDynaset)
|
オープンした結果はSet文でレコードセットオブジェクト変数(例ではdaoRS)へ保存し、レコードセットへの各種の操作は変数daoRSのメソッドやプロパティを使って行います。
Aのところにはオープンするときの属性を指定しますが、通常はdbOpenDynasetで良いでしょう。なお、指定できる値は以下の通りです。
| dbOpenTable |
ローカルテーブルのみ扱え、レコードの更新や削除、追加が可能です。ただし、リンクテーブルは使えません。 |
| dbOpenSnapshot |
基本はdbOpenTable同じですが、レコードの更新や削除、追加が出来ません。 |
| dbOpenDynaset |
ローカルテーブル、リンクテーブルの両方を扱えます。もちろん、レコードの追加や更新、削除は可能です。 |
■daoRS.Close
レコードセットのクローズです。オープンしたら、必ずクローズしましょう。開けたら閉める!ドアが開けっ放しだと…泥棒が入りますよ(笑)
|
|
|
|
|
|
|
|
|
|
次に、Access97までの例です。例では、「住所録テーブル」というテーブルのレコードセットオブジェクトを作成(テーブルのオープン)し、その後クローズしています。太字と下線の部分がポイントで、詳しくはソースコード以下の説明をどうぞ。
Sub prcRecordsetOpenClose97()
'Access VBA Tips
'2.3 テーブルのオープンとクローズ
'Access97までの手順
Dim daoDB As Database
Dim daoRS As Recordset
'データベースのオープン(データベースオブジェクトの作成)
Set daoDB = DBEngine.Workspaces(0).Databases(0)
'テーブルのオープン(レコードセットの作成)
Set daoRS = daoDB.OpenRecordset("住所録テーブル", DB_OPEN_DYNASET)
'テーブルのクローズ
daoRS.Close
'データベースのクローズ
daoDB.Close
End Sub
|
※Access97までの場合。
■Dim daoRS As Recordset
レコードセットオブジェクト用の変数の宣言です。例では変数名にdaoRSという名前にしていますが、ここは好きな名前でかまいません。型にはRecordsetを指定します。
■Set daoRS = daoDB.OpenRecordset(@, A)
テーブルやクエリーをオープンするときは、データベースオブジェクトの.OpenRecordsetというメソッドを実行します。@のところへ、テーブル名、クエリー名またはSELECT文(SQL※)を指定しましょう。なお、例ではテーブル名(住所録テーブル)を指定しています。
※OpenRecordsetにSELECT文(SQL)を書いた例
'テーブルのオープン(レコードセットの作成)
Set daoRS = daoDB.OpenRecordset("select * from 住所録テーブル", DB_OPEN_DYNASET)
|
オープンした結果はSet文でレコードセットオブジェクト変数(例ではdaoRS)へ保存し、レコードセットへの各種の操作は変数daoRSのメソッドやプロパティを使って行います。
Aのところにはオープンするときの属性を指定しますが、通常はDB_OPEN_DYNASETで良いでしょう。なお、指定できる内容は以下の通りです。
| DB_OPEN_TABLE |
ローカルテーブルのみ扱え、レコードの更新や削除、追加が可能です。ただし、リンクテーブルは使えません。 |
| DB_OPEN_SNAPSHOT |
基本はDB_OPEN_TABLE同じですが、レコードの更新や削除、追加が出来ません。 |
| DB_OPEN_DYNASET |
ローカルテーブル、リンクテーブルの両方を扱えます。もちろん、レコードの追加や更新、削除は可能です。 |
■daoRS.Close
レコードセットのクローズです。オープンしたら、必ずクローズしましょう。開けたら閉める!ドアが開けっ放しだと…泥棒が入りますよ(笑)
|
|
|
|
|