Updated 1997/08/03
By 富士通SSL)福岡寿和
ちなみに、 Accessのデータベースエンジンは、Microsoft Jetデータベースエンジンと言い、DAOから使うことをDAO/Jetと言います。
DAO3.5の新機能としては
図 1 DAO/Jet,ODBC Direct,RDOの違い
ですから、RDO2.0を直接使うときに比べて性能は落ちますが、DAOインターフェイスでRDOのほぼすべての機能が使えます。Accessを対象としているアプリケーションを手っ取り早くSQL Server用に書き換えるには有効かもしれませんが、AccessでTransact SQLが動かない現状では、SQL Serverの性能や機能を充分引き出す場合に、SQL文の変更などが生じてしまいます。
DAO3.5からODBC Directを使うときは、CreateWorkspaceメソッドでODBC Directワークスペースを作成します(リスト1)。また、DefaultTypeメソッドのrdODBCを設定して、DAOのデフォルトをJetではなくODBC Directに切り替えることもできます。
DAO/JetとODBC Directの性能を比較したところ、ODBC Directは、DAO/Jetよりもかなり良い結果を示しています。
図 2 ODBC Direct レコード読込時間グラフ
ただし、機能的な面に注目すると
ただし、
レプリケーションは、あるMDBを元にレプリカと呼ばれるコピーを作成し、その複数のコピー間で、データやオブジェクトの更新内容を交換して、内容を同期します。そして、同期処理中以外はネットワークがつながっていなくてもレプリカが使えるので、結果的に1つのMDBを共有しているのと同じようにアプリケーションから扱えます。
図 3 レプリケーション
レプリカ上のレコードへの追加、削除および変更は、次回のレプリケーション実行時に相手側に反映されます。もし、同じレコードが両方で更新されたときは、レプリケーションの競合が発生します。このときDAO3.5は、バージョン番号の多い(変更が多い)レプリカの内容を採用し、バージョン番号も同一のときは、ReplicaIDの小さいレプリカの内容を採用します。採用されなかったレプリカは、競合テーブルにレコードの情報が格納されるので、競合の解消方法をプログラムで変更できます。
● 部分レプリケーション
レプリケーションは、Visual Basic 4.0のDAO3.0でも使うことができました。しかし、DAO3.0では、フルレプリケーションといって、テーブルやオブジェクトごとのレプリケーションのみサポートしていました。RDO3.5からは、部分レプリケーションといって、MDBに含まれるレコードの一部分のみレプリケーションが行えるようになりました。
部分レプリケーションを使えば、レプリカの配付先ごとに、必要な部分のみを同期するので同期処理のパフォーマンスが向上します。さらに、重要データを関係ない部署に配付したレプリカに転送しないように指定できます。
部分レプリケーションを行うためには次のような手順が必要です。
サンプルでは、MDI子画面が1つも開いていないときに[ツール]メニューで(1)と(2)が実行できます。また、[ファイル]-[開く]メニューでレプリカを開くと[ツール]メニューで(3)が実行できます。
図 4 部分リプリケーション
サンプルで(1)を行うとデザインマスターにs_Generationフィールドが追加されます。このフィールドはレプリケーションの管理に使うフィールドで、レコードが変更されると0に設定されます。
なお、Microsoft Access 97 Developer Editionにはレプリケーションマネージャーというレプリカデータベースの作成や維持をするユーティリティが含まれていますが、Visual Basic 5.0には含まれていません。Visual Basic 5.0でも、DAO3.5を使って同様のものを作れますが、受託開発でレプリケーションを使うときは、最低でも開発環境と実行環境のそれぞれ1台づつにAccess97 Developer Editionを導入しておくのが得策かもしれません。
図5 前方スクロールタイプのレコード件数別移動時間グラフ
しかし、そのパフォーマンスと引き換えに、前方スクロールタイプのRecordsetで使えないメソッドとプロパティを表1にまとめました。
表 1 前方スクロールタイプの制限
AbsolutePostionプロパティ
Bookmarkプロパティ
PersentPositionプロパティ
Sortプロパティ
Cloneメソッド
MoveLastメソッド
MovePreviousメソッド
MoveFirstメソッド
FindFirstメソッド
FindNextメソッド
FindLastメソッド
やはり、Visual Basicの豊富な機能を適材適所に使うことが良いシステムを構築する秘訣でしょう。
Visual Basic
開発者の手引き | Visual
Basicコースホームページ
int21 ホームページ | PCDN ホームページ