5 | VBAプログラムのDAOからADOへの変更 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
本題材の従来のAccessデータベースファイル(.accdb)におけるVBAのプログラムでは、Access固有のデータベースエンジンであるJetデータベースエンジンを介してテーブル等にアクセスしています。accdbでは、Jetデータベースエンジン用のライブラリである「DAO」も、また「ADO」も利用することができます。 しかしADP(.adp)では、外部のSQL Serverがデータベースエンジンとなりますので、「DAO」は使えません。もし元のデータベースファイルのVBAのプログラムにおいて、DAOを使ったコードを書いている場合にはすべてそれをADOのコードに書き換える必要があります。 そこでここでは、モジュールのVBAのプログラムにおいて、DAOからADOへの変更を行います。 まずその最初のステップとして、VBAの「参照設定」を変更します。 アップサイジングウィザードを利用してADPを作った場合、自動的にADOへの参照設定が追加されています。しかし一方でDAOへの参照設定が解除されているわけではありません。DAOにも参照設定されているため、コンパイルエラーにはなりませんが、必ず実行時エラーとなります。したがって、次のような手順で、コーディングの前にまずはその参照設定を変更します。
この状態で[デバッグ]メニューよりコンパイルを実行してみましょう。DAOへの参照設定が解除されていますので、DAOの書き方である「Dim ○○ As Database」といった部分でコンパイルエラーが発生するはずです。次のステップでは、これらをADOのものに書き換えていくことになります。 書き換えとは言っても、隅から隅まで手作業で書き換える必要はありません。DAOとADOはかなり似た部分がありますので、コードに対して一定のルールで一括置換を実行すれば、大半のコンパイルエラーは解消できます。ここでは、まずそのような一括置換を実行し、残りのコンパイルエラーを潰していくという手順でDAOからADOへの変更を行っていきたいと思います。 まず、次の簡易変換表に基づいて、特定のモジュールではなくデータベース内のすべてのモジュールを対象に、つまり「置換」ダイアログで「カレントプロジェクト」を選択して、[すべて置換]を実行します。 なお、コードの書き方は人によってまちまちだと思います。下表の左右でどこが違うかに着目したうえで、DAOの書き方、ADOの書き方、あるいはオブジェクト変数名の付け方などは適宜自分のやり方に合わせてください。 【DAO→ADOの簡易変換表】
【ADOにおけるRecordsetのOpenメソッドの引数】
今回のアップサイジングのケースでは、元のデータベースの、プログラムの作りの関係で、他の個所でも“コンパイルエラー”が発生しています。その個所と変更内容を下記に示します。
また今回のプログラムでは、コードによってSQL文を組み立て、それを元にRecordsetを開くという処理や、いわゆるアクションクエリの処理を行うところがあります。その際、AccessとSQL Serverとで明らかに異なるSQLの記法があります。“実行時エラー”となるはずですので、この時点でVBEの検索や置換の機能を利用して変更を加えておくことにします。 今回の場合、その変更点は次のようなものです。
ここでは、参照設定先をDAOからADOへと切り替えた場合に、“とりあえずコンパイルエラーをなくす”というところまでやってみました。メソッドの引数など、ADOの書き方によっては実行時エラーが発生するかもしれませんが、その部分については実際にアプリケーションを動かしながらデバッグしていきたいと思います。 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Copyright © T'sWare All rights reserved |