Microsoft Access Club >DAO入門講座 >このページ >次頁 < 前項  サイト内検索


データベースへの参照 : DAO入門講座



オブジェクト変数を宣言しただけでは、何もできません。その変数をどのデータベースと結びつけるのかを設定する必要があります。

参照方法として、カレントデータベース(開いているデータベース)と他のデータベースとで異なります。ここでは、以下にその方法について確認します。

カレントデータベースを参照する場合

CurrentDb メソッド

開いているデータベースを参照するには、CurrentDb関数を用います。

(例)開かれているデータベースを参照し、絶対パスをメッセージボックスに表示する。

Sub SamplePro()

    Dim db As Database
    Set db = CurrentDb
    
    MsgBox db.Name

End Sub

  • 注意することは、代入するオブジェクト型とオブジェクト型とは等しくなければいけません。下記の記述は誤りです。
    Dim db As Database
    Dim rs As Recordset
    Set rs = CurrentDb
  • Nameプロパティは、DAO オブジェクトのユーザー定義の名前を設定または返します。ここでは、カレン度データベースとして関連付けられたオブジェクト変数dbと組み合わせ、カレントデータベースの絶対パスを表します。
DBEngine オブジェクト

DBEngine オブジェクトは、DAO モデルの最上位レベルのオブジェクトです。このオブジェクトを利用して、開いているデータベースへの参照を確立することができます。

Sub SamplePro()

    Dim db As Database
    Set db = DBEngine.Workspaces(0).Databases(0)
    
    MsgBox db.Name

End Sub

  • データベースデータベースが開かれ、オブジェクトを最初に参照または使用する場合、既定のワークスペースである DBEngine.Workspaces(0) が自動的に作成されます。

最上位モデルのDBEngineからWorkspaces、Databasesと各コレクションを指定します。
  • 引数の(0)は、開いているデータベースを指します。

留意点

Access97以前のバージョンでは、カレント データベースを参照する場合 、以下の2種類が用いられていました。

  • DBEngine.Workspaces(0).Databases(0)

  •  DBEngine(0)(0)

Access 2000以降、これらの構文の代わりに CurrentDb メソッドを使うことをお勧めします。

DBEngine(0)(0) ではカレント データベースのコピーが参照されますが、CurrentDb メソッドではカレント データベースのインスタンスが新たに作成されます。

他のデータベースを参照する

カレントデータベースではなく、他のAccessファイルのデータを利用したい場合があります。このような時は、DAO機能の出番です。レコードセットを作成するには、OpenDatabase メソッド を用いて作成します。

OpenDatabase メソッド

プログラミングでは、下記のように記述します。

Sub SamplePro()

    Dim db As Database
    Set db = OpenDatabase("C:\SampleFile.mdb")
    
    MsgBox db.Name

End Sub

Opendatabaseメソッドの引数に、参照を設定するデータベースの絶対パスを記述します。

  • もちろん、他のデータベースではなく開いているデータベースの絶対パスを記述すると、カレントデータベースに対して参照を確立することが可能になります。

結論

データベースへの参照をまとめると、以下のようになります。

  • カレントデータベースへの参照を行う場合は、CurrentDb メソッドを利用します。
  • 他のデータベースへの参照の場合は、OpenDatabaseメソッドを用います。

 

2004/05/04

ページの先頭へ 前ページへ戻る

 


データベースへの参照 : DAO入門講座


 

-Microsoft Access Club-

cPanel あるいは PLESKコントロールパネルをインストールした専用レンタルサーバのディスカウントプランを期間限定で公開しています。
cPanel・PLESKコントロールパネルを備えた専用レンタルサーバ....。