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


OpenDatabaseメソッド : DAOリファレンス - DAO入門講座



OpenDatabaseメソッドとは、Setステートメントを用いて、データベース変数に他のデータベースーの参照を代入するメソッドです。CurrentDbメソッドと異なるところは、開かれたデータベースだけではなく、ネットワーク接続されたデータベースまで操作できるところです。
  • 開かれたデータベースから、他のデータベースをDAOで操作する場合、OpenDatabaseメソッドを使用します。

書式と引数

  • Set database = workspace.OpenDatabase (dbname, options, read-only, connect)
引数 解説 その他
database Databaseオブジェクトを表すオブジェクト変数を指定します。 省略不可
workspace 既存のWorkspaceオブジェクトを表すオブジェクト変数を指定します。省略した場合は、既存のWorkspaceオブジェクトになります。 省略可
dbname 既存のJetデータベースのファイル名、またはODBCデータソースのデータソース名を指定します。 省略不可
options 共有、排他モードの設定を行います。省略時は共有モードです。なお、Trueなら排他モード、Falseなら共有モードになります。 省略可
read-only 読み取り専用権限モード、または読み取り/書き込み権限モードの設定を行います。省略時は、読み取り/書き込み権限モードです。なお、Trueなら読み取り専用権限モード、Falseなら読み取り/書き込み権限モードになります。 省略可
connect パスワードを含むさまざまな接続情報を指定します。省略時は、設定なしです。 省略可

事例-1

他ドライブにあるAccessの起動パスとファイル容量を求めます。

Sub FileLenCK ()

On Error GoTo エラー

    Dim db As DAO.Database '--- A
    Dim strPass As String
    Dim lngVal As Long
    Dim StrMsg As String
    
    Set db = OpenDatabase("C:\AccessVBA事典\Sample.mdb") '--- B
    strPass = db.Name
    
    lngVal = FileLen(strPass) \ 1000 '--- C
    strMsg = strPass & vbNewLine & _
                  "ファイルの容量 : " & Format(lngVal, "#,#00") & "KB"
    MsgBox strMsg

    db.Close: Set db = Nothing

    Exit Sub
    
エラー:

    MsgBox Err.Number & " : " & Err.Description
    Exit Sub

End Sub
解説
  1. オブジェクト変数 db を宣言します。
  2. Setステートメントは、オブジェクト変数にオブジェクトを関連付ける役割があります。今回の場合、OpenDatebaseの引数に指定された他のAccessファイルをオブジェクト変数dbに関連付けます。
    正式な記述は、Set db = DBEngine(0).OpenDatabase("C:\AccessVBA.mdb") ですが、DBEngine(0)は省略することもできます。
  3. FileLen関数でファイル容量を求めます。

[参考] データベースのファイル容量を求める

なお、開いているデータベースのファイル容量を求める場合は、下記のように記述します。

Sub FileLenCK2 ()

On Error GoTo エラー

    Dim db As DAO.Database
    Dim strPass As String
    Dim lngVal As Long
    Dim StrMsg As String
    
    Set db = CuurebtDb
    strPass = db.Name
    
    lngVal = FileLen(strPass) \ 1000
    strMsg = strPass & vbNewLine & _
                  "ファイルの容量 : " & Format(lngVal, "#,#00") & "KB"
    MsgBox strMsg

    db.Close: Set db = Nothing

    Exit Sub
    
エラー:

    MsgBox Err.Number & " : " & Err.Description
    Exit Sub

End Sub

事例-2

他のAccessファイルのテーブルレコードを求めることもできます。この場合は、下記のように記述します。

Sub TableRecordView()

On Error GoTo エラー

    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim strFileName As String
    Dim strTableName As String
    Dim strMsg As String
    
    strFileName = "C:\在庫管理.mdb" ' --- A
    strTableName = "棚卸"
        
    Set db = OpenDatabase(strFileName)
    Set rs = db.OpenRecordset(strTableName, dbOpenTable) ' --- B
        
    Do Until rs.EOF
        strMsg = strMsg & vbNewLine & rs!ID & " : " & _
                 rs!商品名 & " : " & rs!個数 & "個"
        rs.MoveNext
    Loop
    
    MsgBox strFileName & vbNewLine & strMsg
    
    rs.Close: Set rs = Nothing
    db.Close: Set db = Nothing
    
    Exit Sub
    
エラー:

    MsgBox Err.Number & " : " & Err.Description
    Exit Sub

End Sub
解説
  1. 対象となるAccessファイルとテーブル名を指定します。ここでは、Cドライブにある在庫管理.mdbを指定します。テーブル名は棚卸です。以下、テーブルレコードです。

  1. テーブルタイプのレコードセットを作成します。
実行結果

このプロシージャを実行すると、下記のメッセージボックスが表示されます。

関連ページ

 

2004/05/02

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

 


OpenDatabaseメソッド : DAOリファレンス - DAO入門講座


 

-Microsoft Access Club-

アメリカ合衆国の大手データセンターのアダルト対応可能なリーズナブル価格設定の専用・共有レンタルサーバーをご提供しています。
アメリカ合衆国の大手データセンターにサーバー機器を設置。
アダルト対応可能な専用・共有レンタルサーバーを提供。