Database オブジェクト (DAO)

適用先: Access 2013、Office 2013

Database オブジェクトは、開いているデータベースを表します。

解説

開いているデータベースを操作するには、 Database オブジェクトとそのメソッドおよびプロパティを使用します。 あらゆる種類のデータベースで、以下の操作を実行できます。

  • Execute メソッドを使用して、アクション クエリを実行します。

  • Connect プロパティを設定して、ODBC データ ソースへの接続を確立します。

  • QueryTimeout プロパティを設定して、ODBC データ ソースに対して実行するクエリを待機する時間を制限します。

  • RecordsAffected プロパティを使用して、アクション クエリによって変更されたレコードの数を確認します。

  • OpenRecordset メソッドを使用して、選択クエリを実行し、Recordset オブジェクトを作成します。

  • Version プロパティを使用して、データベースを作成したデータベース エンジンのバージョンを確認します。

Microsoft Access データベース エンジン データベースを使用すると、Database オブジェクトのテーブル、クエリ、およびリレーションシップに関する情報を作成、変更、または取得するだけでなく、他のメソッド、プロパティ、およびコレクションを使用して Database オブジェクトを操作することもできます。 たとえば、以下の操作を実行できます。

  • CreateTableDef メソッドを使用してテーブルを作成し、 CreateRelation メソッドを使用してリレーションを作成します。

  • CreateProperty メソッドを使用して、新しい Database プロパティを定義します。

  • CreateQueryDef メソッドを使用して、持続的または一時的なクエリ定義を作成します。

  • MakeReplicaSynchronize、および PopulatePartial の各メソッドを使用して、データベースのフルまたは部分レプリカを作成して同期します。

  • CollatingOrder プロパティを設定して、異なる言語の文字ベース フィールドに五十音順の並べ替え順序を設定します。

CreateDatabase メソッドを使用して、Databases コレクションに自動的に追加される永続的な Database オブジェクトを作成し、ディスクに保存します。

OpenDatabase メソッドを使用する場合、 DBEngine オブジェクトを指定する必要はありません。

リンク テーブルを使用するデータベースを開いても、指定した外部ファイルへのリンクは自動的に確立されません。 テーブルの TableDef オブジェクトまたは Field オブジェクトを参照するか、 Recordset オブジェクトを開く必要があります。 これらのテーブルへのリンクを設定できない場合、トラップ可能なエラーが発生します。 データベースにアクセスする権限が必要な場合も、別のユーザーがデータベースを排他的に開いている可能性もあります。 このような場合、トラップ可能なエラーが発生します。

Database オブジェクトを宣言するプロシージャが実行されると、開いているすべての Recordset オブジェクトと共にローカルの Database オブジェクトが閉じられます。 保留中の更新は失われ、保留中のトランザクションはロールバックされますが、トラップ可能なエラーは発生しません。 Recordset オブジェクト変数および Database オブジェクト変数をローカルに宣言するプロシージャを終了する前に、保留中のトランザクションまたは編集を明示的に完了し、これらのオブジェクトを閉じる必要があります。

Workspace オブジェクトでトランザクション メソッド (BeginTransCommitTrans、または Rollback) のいずれかを使用する場合、これらのトランザクションは、Database オブジェクトを開いた Workspace オブジェクトに対して開かれるすべてのデータベースに適用されます。 個別のトランザクションを使用するには、追加の Workspace オブジェクトを開いてから、その Workspace オブジェクト内でもう 1 つ Database オブジェクトを開く必要があります。

注:

[!メモ] Databases コレクションに重複する名前を作成して同じデータ ソースまたはデータベースを複数回開くことができます。 Database オブジェクトをオブジェクト変数に割り当て、変数名で参照する必要があります。

この例では、既定の Workspace オブジェクトで Database オブジェクトを新規作成し、既存の Database オブジェクトを開きます。 次に、 Databases コレクションおよび各 Database オブジェクトの Properties コレクションを列挙します。

Sub DatabaseObjectX() 
 
 Dim wrkAcc As Workspace 
 Dim dbsNorthwind As Database 
 Dim dbsNew As Database 
 Dim dbsLoop As Database 
 Dim prpLoop As Property 
 
 Set wrkAcc = CreateWorkspace("AccessWorkspace", "admin", _ 
 "", dbUseJet) 
 
 ' Make sure there isn't already a file with the name of 
 ' the new database. 
 If Dir("NewDB.mdb") <> "" Then Kill "NewDB.mdb" 
 
 ' Create a new database with the specified 
 ' collating order. 
 Set dbsNew = wrkAcc.CreateDatabase("NewDB.mdb", _ 
 dbLangGeneral) 
 Set dbsNorthwind = wrkAcc.OpenDatabase("Northwind.mdb") 
 
 ' Enumerate the Databases collection. 
 For Each dbsLoop In wrkAcc.Databases 
 With dbsLoop 
 Debug.Print "Properties of " & .Name 
 ' Enumerate the Properties collection of each 
 ' Database object. 
 For Each prpLoop In .Properties 
 If prpLoop <> "" Then Debug.Print " " & _ 
 prpLoop.Name & " = " & prpLoop 
 Next prpLoop 
 End With 
 Next dbsLoop 
 
 dbsNew.Close 
 dbsNorthwind.Close 
 wrkAcc.Close 
 
End Sub 
 

この例では、 CreateDatabase メソッドを使用して、暗号化された新しい Database オブジェクトを作成します。

    Sub CreateDatabaseX() 
     
     Dim wrkDefault As Workspace 
     Dim dbsNew As DATABASE 
     Dim prpLoop As Property 
     
     ' Get default Workspace. 
     Set wrkDefault = DBEngine.Workspaces(0) 
     
     ' Make sure there isn't already a file with the name of 
     ' the new database. 
     If Dir("NewDB.mdb") <> "" Then Kill "NewDB.mdb" 
     
     ' Create a new encrypted database with the specified 
     ' collating order. 
     Set dbsNew = wrkDefault.CreateDatabase("NewDB.mdb", _ 
     dbLangGeneral, dbEncrypt) 
     
     With dbsNew 
     Debug.Print "Properties of " & .Name 
     ' Enumerate the Properties collection of the new 
     ' Database object. 
     For Each prpLoop In .Properties 
     If prpLoop <> "" Then Debug.Print " " & _ 
     prpLoop.Name & " = " & prpLoop 
     Next prpLoop 
     End With 
     
     dbsNew.Close 
     
    End Sub