次に、アップサイジングウィザードによって生成されたSQL Server上のオブジェクトを整理します。ここではまず、「ビュー」と「テーブル値関数」を統合します。
アップサイジングウィザードでは同じ選択クエリにも関わらず、ビューとテーブル値関数という2種類のオブジェクトが生成されています。これは、『フォームやレポートのレコードソースとなっている選択クエリはテーブル値関数に、モジュールなどからだけ呼び出される単独の選択クエリはビューに』という基準に沿って変換されているためです。

SQL Serverでは、「ビュー」は、テーブルからフィールドを選択したり、並べ替えや抽出を行ったり、複数テーブルの結合を行ったり、まさにAccessの選択クエリと同じものです。
一方、「テーブル値関数」は、同じように並べ替えや抽出・結合を行いますが、“テーブル型のデータを返す関数”という位置付けになっており、ビューとは微妙に異なります。またSQL文として呼び出す際も、関数なので、「select
* from qselスケジュール管理()」のようにカッコを付けます。
しかし、元を正せばどちらもAccessでは選択クエリです。Accessで作ったときとは異なる複数のオブジェクトに分かれてしまうより「クエリ=ビュー」というように見られた方が分かりやすいと思います。
またSQL Server Management Studioで編集作業などを行う場合、オブジェクトエクスプローラ上ではまったく異なるノードの下にオブジェクト名が表示されるので、操作の際に行ったり来たりするのは面倒です。またテーブル値関数は右クリックのメニューなどからレコード内容をすぐに見ることができず(SQLのスクリプトを実行する必要あり)、やはりこれも操作的に面倒な面があります。
そこでここでは、いずれのオブジェクトも「ビュー」の方だけに統合したいと思います。すべてのテーブル値関数をビューとして作り直します。
- ここでの作業は、AccessとManagement Studioどちらで行ってもかまいません。ADPの場合、そこに表示されるテーブルやクエリはもはやAccessのものではなくあくまでもSQL
Server上にあるそのものですので、どちらで行っても結果は同じです。ツールとして使いやすいと思う方、使い慣れた方を使えばよいと思います。ただしここではAccessで行うものとして説明します。
- まず、オブジェクトの名前がバッティングしないように、既存のテーブル値関数を適当な別の名前に変更します。

- 次に、ナビゲーションウィンドウ上で既存のテーブル値関数を右クリックして[デザインビュー]を選択、そのデザインを開きます。



- リボンから[デザイン]タブにある[ツール]-[SQL]のボタンをクリックします。
これによって、デザインビュー上に「SQLペイン」が表示され、そのテーブル値関数のSQL文を確認することができます。



- 通常のAccessのファイル形式の場合は、「デザインビュー」と「SQLビュー」がまったく別のビューとなっていますが、ADPの場合はこのようにひとつのウィンドウ内に表示されます。外観的にもAccessのクエリのビューではなく、SQL
Server Management Studioのデザイン画面と同じようなものになっています。
- SQLペインでは、直接SQL文を編集することができます。編集を行って他のペインをクリックしたりすることで、その上の「ダイアグラム」や「グリッド」のペインにもその内容が反映されます(その逆も可能)。
- 次に、SQLペイン上のすべてのSQL文を範囲選択し、クリップボードにコピーします。

- テーブル値関数を閉じます。
その際、保存確認のメッセージが表示されるかもしれませんが、保存してもしなくてもかまいません。
- 次に、リボンの[作成]タブにある、[その他]-[クエリウィザード]ボタンをクリックします。

- 「新しいクエリ」ダイアログが表示されたら、項目の中から「デザインビュー」を選択して[OK]ボタンをクリックします。
「デザインビュー」という表現にはなっていますが、これがSQL Serverでいうところの「ビュー」となります。

- それによってビューのデザインビューが開きますが、一般のファイル形式のAccessのクエリ新規作成時と同様に、まず「テーブルの追加」ダイアログが開きます。しかしここではテーブルからビューを組み立てていくのではないので、そのまま[閉じる]ボタンをクリックします。



- 開いたビューのSQLペイン上で、先ほどクリップボードにコピーしてあるSQL文を貼り付けます。



- そのまま、そのビューに名前を付けて保存します。

- 以上のSQL文のコピー&ペーストの操作を、すべてのテーブル値関数に対して同様に行います。
- 最後に、元のテーブル値関数は不要となりましたので、ナビゲーションウィンドウ上から削除します。
|