ADPのメリットとは?
ADPの開発形態では、テーブルのレコードはすべてサーバー側データベースに記憶します。Access側にはフォームやレポート、VBAコードなどを記憶したADPファイルを準備します。そしてサーバー側データベースとクライアントのAccessとの間はADO技術によって接続されます。
従来のAccess 97でも似たような開発ができました。Visual Basicマガジンの連載、『AccessユーザーのためのC/S開発入門講座』でお付き合いくださった読者の方々も多いでしょう。その連載でも触れましたが、DAO/Jetベースの開発ではネットワークに多量のデータを流してしまう欠点があります。特にサーバー側テーブルに対してリンクを張るとか、テーブルの結合処理をクライアント側で実行するなど、さまざまな場面でネットワークに多量のデータを流しています。そこでクライアント側に必要なレコードを絞り込むことが重要なのです。
ところがレコードを検索するパラメータをダイナミックに変えて検索作業をサーバー側で行なうためには、ストアドプロシージャを作らなければなりません。ビュー表では外部から検索パラメータを与えることができないのです。ここで、DAO/Jetの問題が表面化します。ストアドプロシージャを使うためには、パススルークエリーしか手段はありません。しかも、更新することができないスナップショット型のレコードセットになります。もちろん、ODBCDirectやRDOなどを使ってプログラミングすれば、この問題を解決することは可能です。しかしAccess 97がもっている標準のフォーム作成機能を使ったシステム開発では、ストアドプロシージャに対して更新可能な連結フォームを作る機能がないのです。
その機能がAccess 2000のADPプロジェクトによって実現されました。しかも、ストアドプロシージャに対して動的にパラメータを与えることもできるのです。今までRDOなどのVBプログラミングで苦労していたことが、「ストアドプロシージャを作って連結させれば、ハイおしまい!」の世界になったのです。もうADPプロジェクトを使わない手はないでしょう。
そこで本稿では、ストアドプロシージャへの連結を、本誌の主旨に反して(?)、VBAプログラムを一切使わずに実現できることをお話します。ただしSQLプログラミング言語の知識は必須ですので、Visual Basicマガジンのわたくしの連載記事を参考にしてください。