ADO または DAO を選択して Access データベースを使用する

Microsoft Office 2000/Visual Basic プログラマーズ ガイド   

ADO は、DAO より多種類のデータ ソースにアクセスでき、DAO では利用できない Jet 4.0 データベース エンジンの機能の一部を利用することもできますが、ADO を Access データベースに対して利用する際に、次のような制限があるため、DAO を使用する必要がある場合があります。

  • Access オブジェクト モデルでは、Form オブジェクトの新しい Recordset プロパティを、フォーム内で参照中のデータの Recordset オブジェクトの要求や指定に使用することができます。Access データベースで現在のフォームに Recordset オブジェクトを要求する場合、Access では必ず DAO Recordset オブジェクトが返されます。したがって、返された Recordset オブジェクト を処理するには、DAO コードをそのまま使用してください。

  • Recordset プロパティを使用して、Form オブジェクトの Recordset オブジェクトを作成した Recordset オブジェクトに設定するとき、Form オブジェクトを ADO Recordset オブジェクトに設定した場合には、データは読み取り専用となります。データを書き込み可能にするには、必ず Form オブジェクトを DAO Recordset オブジェクトに設定してください。

  • Access データベースにあるデータベース プロパティを読み取り設定する、または Description プロパティや Filter プロパティなどの一部のテーブル プロパティを読み取り設定するには、必ず DAO コードを使用してください。

  • ADO および DAO コード間での情報の交換はできません。たとえば、DAO のプロシージャが Recordset オブジェクトを返す場合、DAO Recordset オブジェクトを ADO コードに変換したり渡したりする方法はありません。また反対に、ADO Recordset オブジェクトを DAO で読み取ったり、DAO に変換することはできません。ただし、これは ADO が DAO で作成されたテーブルやクエリなどの保存されたデータベース オブジェクトを使用できない、また逆に DAO がそれをできないということではなく、ADO および DAO が 1 つのプロジェクト内に混在することは可能でも、ADO コードを以前からあった DAO コードにより返されたオブジェクトで使用することはできないことです。DAO コードを継続して使用するか、ADO コードを使用して、そのプロシージャの記述を変更してください。

Access Form の Recordset プロパティの使用方法、およびデータベース プロパティの活用方法については、第 5 章「Office アプリケーションを使用する」を参照してください。テーブル プロパティの活用方法については、この章の「Access テーブルを作成および修正する」を参照してください。

既存の DAO データ アクセス コンポーネントを更新する場合、または Access データベースや Jet データベース エンジンの I-ISAM ドライバに対応するデータ ソースでのみ使用できる新しいデータ アクセス コンポーネントを開発する場合、Microsoft DAO 3.6 オブジェクト ライブラリに参照先を設定して DAO をそのまま使用することができます。Access 2000 データベースでコード モジュールに対してユーザー レベルでのセキュリティが定義されたコードを除く、DAO 3.5 に記述されたすべての DAO コードは、そのまま DAO 3.6 で使用できます。

ADO を必要とする Jet データベース エンジンの機能はわずかしかありません。これには、新しいすべての接続を除外し、データベースを終了した現在のユーザーを除外できる設定値であるパッシブ シャットダウン、データベースに現在ログイン中のすべてのユーザーをリストするスキーム行セットへのアクセス、ページまたはレコード レベル ロックでのコントロールがあります。これらの機能の詳細については、第 16 章「マルチユーザー データベース ソリューション」を参照してください。Jet のエンジン機能へのアクセスおよびそのほかの ADO 特有の機能を必要としない場合は、DAO を使用したコードをそのまま記述しても問題ありません。

新しいデータ アクセス コンポーネントを作成する場合、拡張機能、簡素化されたオブジェクト モデル、複数のデータ ソースのサポートなどがあることから、ADO の使用を考慮してみてください。特に、将来的に SQL Server にアップグレードする予定のある Access データベース ソリューションを開発する場合、ADO を選択するのが適しています。ADO コードで記述しておくことで、SQL Server データベースへの変更を最小限に抑えることができます。さらに、SQL Server、多次元データ、Web アプリケーションで使用できる新しいデータ アクセス コンポーネントを開発する場合にも、ADO を選択する方が推奨されます。

次の表では、データ アクセス オブジェクト (DAO) を使用するときに使用可能な機能をまとめ、その機能を、Microsoft ActiveX Data Objects 2.1 (ADO)、Microsoft ADO Extensions for DDL and Security 2.1 (ADOX)、および Microsoft Jet and Replication Objects 2.1 (JRO) の各オブジェクト モデルで使用できる機能と比較します。

メモ   DAO とは異なり、ADO および ADOX のオブジェクトでは、これらのデータベースのプロバイダでその動作がサポートされている限り、印を付けた動作を Jet 以外のデータベースで使用できます。


機能

DAO

ADO1

ADOX2
JRO
(.mdb のみ)
Recordset オブジェクトの作成 X X    
新しいデータベースの作成 X   X3  
データベース プロパティの編集 X      
スタートアップ プロパティの編集 X X4    
カスタム データベース プロパティの作成 X      
テーブルの作成 X   X  
テーブル プロパティの設定および編集 X   X5  
フィールド プロパティの設定および編集 X   X  
テーブル リレーションシップの作成 X   X3  
新しい Jet 4.0 SQL コマンドおよび構文のサポート6   X X  
新しい Jet 4.0 Decimal (少数型) データ タイプのサポート     X  
フィールド データの Compression 属性のサポート     X  
コードによってのみアクセス可能な保存されたクエリの作成および編集6     X3  
Access Database ウィンドウおよびコードによりアクセス可能な既存のクエリの作成および編集 X      
データベースの圧縮/暗号化 X     X7
キャッシュのリフレッシュ X     X7
データベースを複製可能にする X     X8
データベース レプリカの作成 X     X8
レプリカの同期 X     X8
レプリカの SQL Server のレプリカへの同期       X8
現在のユーザーが共有データベースを閉じた後、再び開くことを防止する接続管理のサポート   X    
共有データベースのユーザーについての情報をリストする Recordset オブジェクトの取得   X    
Recordset オブジェクトや SQL DML ステートメントのページ レベルやレコード レベルでのロックの使用をプログラムで制御する機能   X    

1 データベースの参照に Connection オブジェクトを使用

2 データベースの参照に Catalog オブジェクトを使用

3 Access データベース ファイル (.mdb) を使用するときにのみ利用可能。SQL Provider の今後のバージョンには、Access プロジェクト ファイル (.adp) の SQL Server ビューでもこの機能が利用できるようになります。

4 Access プロジェクト ファイル (.adp) を使用するときにのみ利用可能

5 サポートは一部に限定されています。サポートされているテーブル プロパティについては、この章の「テーブルの詳細プロパティを設定する」を参照してください。

6 ネイティブの Jet 4.0 SQL は、これまで以上の ANSI 92 SQL コマンドや構文をサポートできるように機能拡張されています。これらのコマンドや構文は、ADO コードから実行した場合にのみサポートされ、DAO や Access の [SQL ビュー] ウィンドウからはサポートされません。ただし、これらのコマンドや構文を使用するかどうかに関わらず、記述する時点では、ADOX で作成した既存のクエリを表示したり [Access データベース] ウィンドウから実行することはできません。詳細については、この章の「ストアド クエリを作成および修正する」を参照してください。

7 データベースの参照に JetEngine オブジェクトを使用

8 データベースの参照に Replica オブジェクトを使用

この章では、ADO の概要、およびADO を使用して Access データベースを使用するための Microsoft Jet 4.0 OLE DB プロバイダを用いたデータ アクセス コンポーネントの作成方法に焦点を当てて説明し、DAO を必要とする場合の情報も記載しています。DAO の変換の問題およびそれに伴う技術については、この章の「ADO を使用して Access データベースを使用する」に記載しています。マルチユーザー データベース アプリケーションでの ADO の使用については、第 16 章「マルチユーザー データベース ソリューション」 に記載しています。DAO の使用方法の詳細については、Microsoft DAO 3.6 のヘルプを参照してください。

表示: