データベースとADO

関数が強化されたOffice 2000 VBA

 たいていのプログラミング言語には関数が搭載されています。関数がなければ、複雑な演算や日付/時刻などの演算ができないからです。もちろん、VBAにも古くから関数は搭載されていますが、Office 2000になって文字列関数の種類が増えたことにより、VBAは約150個の関数を備えることになりました。表16に、Office 2000 VBAに新たに搭載された文字列関数を挙げてみましたが、ここではなぜ文字列関数が強化されたのか、その意義について考えてみましょう。

表16:文字列関数を中心としたOffice 2000 VBAの新規関数

 関数

 機能

Filter関数指定されたフィルタ条件に基づいた文字列配列のサブセットを含むゼロベースの配列を返す。
FormatCurrency関数システムのコントロールパネルで定義されている書式を使って通貨形式の文字列を返す。
FormatDateTime関数日付形式または時刻形式の文字列を返す。
FormatNumber関数数値形式の文字列を返す。
FormatPercent関数100で乗算したパーセント形式の式にパーセント記号(%)を付加して返す。
InStrRev関数ある文字列の中から指定された文字列を最後の文字位置から検索を開始し、最初にみつかった文字位置(先頭からその位置までの文字数)を返す。
Join関数配列に含まれる各要素の内部文字列を結合して作成される文字列を返す。
MonthName関数指定された月を表わす文字列を返す。
Replace関数指定された文字列の一部を別の文字列で指定された回数分で置換した文字列を返す。
Round関数指定された小数点位置で丸めた数値を返す。
Split関数各要素ごとに区切られた文字列から1次元配列を作成して返す。
StrReverse関数指定された文字列の文字の並びを逆にした文字列を返す。
WeekdayName関数指定された曜日を表わす文字列を返す。

 そもそも、文字列関数と切っても切れない関係にあるのがデータベースです。文字列関数とは、データベースから取り出したデータを加工するために用意された機能である、と位置づけても過言ではありません。つまり、Office 2000 VBAで文字列関数の強化が図られているその裏側には、今後はOffice 2000がローカルマシン、サーバーマシンを問わずにデータベースのフロントエンドとなり得る可能性があるということなのです。
 従来は、Accessの標準ファイルであるスタンドアロンシステムのMDBファイルは、DAO(Data Access Objects)と呼ばれるインターフェイスを介してJetエンジン(Microsoft AccessやVBに搭載されているデータベースエンジン)を使って操作していました。また、シーケンシャルファイルとは別にインデックスファイルを作成し、データアクセスを高速化したISAMファイル(Indexed Sequential Access Method)や、Microsoft SQL ServerやOracleデータベースなどの他のリレーショナルデータベースにはODBC(Open DataBase Connectivity)経由でアクセスしていました。
 しかしOffice 2000 VBAからは、ADO(ActiveX Data Objects)がデータベース開発のキーワードとなることでしょう。なぜなら、ADOを使えば、MDBファイルのようなスタンドアロン型のデータベースにはDAO、クライアント/サーバーシステムでSQL ServerなどにアクセスするならODBCドライバ、というようなアクセス方法による区別がなくなるからです。
 ADOは、図3のようにOLE DBプロバイダと呼ばれるデータアクセスエンジンをベースにしています。したがって、従来のスタンドアロンシステムのコードに、少し手を加えるだけで、クライアント/サーバーシステムへの拡張が可能な上、両者の違いを意識する必要がありませんので、データベースプログラミング初心者にとっても習得が容易になっている点が大きな特徴です。

図3:Office 2000 VBAでは、データベースへのアクセス方法はADOに統一される

 Office 2000のリリースは、私たちVBAユーザーにとって、本格的、かつ柔軟なデータベースの設計や開発を学習する絶好の機会と言えるでしょう。ちなみに、ADOはMicrosoftのコンポーネント仕様を実現するための「COM」と呼ばれるテクノロジーに基づいている点を補足しておきます(表17)。

表17:Office 2000 Developerのデータ接続ツール

 機能

 説明

Data Environmentデザイナデータ連結コントロールへ結合するために、外部データベースへの接続をVBA内で簡単に使用できるインターフェイスで作成する。
ADOデータコントロールデータ連結コントロールへ結合するために、VBA内で簡単に使用できる外部データベースとの接続を作成する。
Data-Aware Microsoft ActiveXコントロールHierarchical FlexGridおよびデータコンボ(DataCombo)コントロールなどのコントロール。データソースに連結させてデータの表示や編集ができる。
Microsoftデータ連結コレクションデータコンシューマとデータソース間のやりとりを管理する。
Data ReportデザイナData Environmentから項目をドラッグするだけで、コードを記述することなく洗練されたレポートを素早く作成する。