|
前回ビュー表を学習したとき、ビュー表はレコード抽出条件などのパラメータを外部から動的に与えることはできないとお話ししました。そして動的にパラメータを与える場合は、ストアドプロシージャが必要であることに触れました。
ストアドプロシージャを作成する大きな目的の1つに、レコード検索条件を外部から与えて自由なレコード選択を行なうことがあります。
前回の第3節以降を思い出しながら、パラメータ付きストアドプロシージャを作成してみましょう。
最初に、Accessプロジェクトの見本データベースであるNortwindCSデータベースに接続します。
接続を行なったら、
『クエリ』−『新規作成』
で、新しいクエリを作成します。
図24のように、ストアドプロシージャのデザインを選択しましょう。

図24 ストアドプロシージャのデザインを選択する
ストアドプロシージャの作成に必要となるテーブルの選択画面が表示されます(図25)。前回の図6と同じように、商品区分テーブルと商品テーブルを選択します。また表示する列も同じにしましょう(図26)。

図25 テーブルの選択画面

図26 表示する列の定義
次にレコード抽出条件を定義します。前回のビュー表の作成では、生産中止の商品情報を表示しました(前回の図6と図12参照)。
今回は、
生産中または生産中止の条件入力
在庫個数の条件入力
をパラメータとします。

図27 レコード抽出パラメータ条件の入力
図27のように、アットマークで始まる特別な名前をパラメータ変数として、抽出条件欄に入力します。
また在庫個数のレコード検索条件は
@min個以上@max個以下
とするため、検索条件入力のための在庫列をもう1つ増やしてください。
パラメータを定義したら、ウィンドウを閉じてストアドプロシージャに名前を付けて保存します(図28)。

図28 ストアドプロシージャの名前
以上の操作によって、パラメータ付きストアドプロシージャの作成ができました。
念のためそのストアドプロシージャのプログラムを確認します。
図27の画面で、
[表示]メニューの[SQLビュー]
を実行してください。
図29のようなストアドプロシージャのソースプログラムが表示されます。

図29 SQLビューで確認したパラメータ付きストアドプロシージャのプログラム
パラメータ付きストアドプロシージャの特徴は、ストアドプロシージャの名前とASの間に、パラメータ宣言が行なわれています。
さてこのパラメータ付きストアドプロシージャのクエリを実行してみましょう。いつものように「クエリを開く」操作です。
図30のように、@flagに値を入力するように促されます。まず生産中止を表す数字の0を入力します。

図30 @flagのパラメータの入力
次に図31のように、@minに値を入力するように促されますので、在庫個数の最小値を入力します。ここでは10個以上20個以下を検索しますので、10と入力します。

図31 @minのパラメータの入力
次に図32のように、@maxに値を入力するように促されますので、20と入力します。

図32 @maxのパラメータの入力
検索パラメータに値を入力して実行すると、図33のように、検索条件に合ったレコードが抽出されます。

図33 検索パラメータ条件に合った、レコードの表示
図33のデータシートは参照専用でレコードの修正を行なうことはできません。しかしAccessプロジェクトの連結フォーム機能によって、ストアドプロシージャが返すレコードセットを修正することができるようになります。この機能こそ長年Visual
Basicに苦汁を飲まされ続けられたAccessクライアントサーバー開発者にとって、待ち焦がれていた画期的な機能なのです。この機能があるがために、Accessプロジェクトを使ってくださいと言えるのです。
次回最終回は、ストアドプロシージャに連結したフォームの作成を解説したいと思います。
|