はじめに
Sharperlightのファウンドリは、Webアプリケーションの作成をサポートするツールです。データベースのデザインから入力フォームまで設計できます。
今回は、入力フォーム上にカスケードルックアップを作成する方法をご紹介します。
カスケードルックアップとは何かを説明します。
都道府県と市町村を入力する場合を例とします。ある都道府県を一覧から選択し、次に市町村を選択する場合、市町村の一覧は、先に選択した都道府県に属する市町村のみに限定されるといったルックアップ(検索)機能です。
Sharperlight ファウンドリの使用
Sharperlightアプリケーションメニューより、ファウンドリを選択します。

ファウンドリが起動します。
製品タブ

製品タブでは、これから作成するシステム(製品)の概要を記載します。あらかじめ規定値が各オプションに設定されています。
今回は、製品コード、説明、著者およびデータベースを以下のように書き換えます。
製品コード: Sharperlightのデータモデルのコードおよびそのファイル名となります。
データベース: ファウンドリによって作成されるデータベース名を指定します。
さらにテーブル名に接頭辞を付与とテストデータの作成オプションを無効にします。

テーブルタブ
都道府県テーブル
都道府県の一覧およびその関連情報を保存するテーブルです。都道府県テーブルの属性は以下のように設定します。
分類: Dimensionを指定します。Dimensionは、"参照データ保存用テーブル”といった意味です。対して、Factは取引データ等の動的なデータを保存するためのテーブルを意味します。
メニュー: ファウンドリによって作成されるレポートメニューにこのテーブルへのリンクを設定します。
書き戻しを許可: このテーブルへのデータの書き込みを許可します。

市町村テーブル
市町村の一覧およびその関連情報を保存するテーブルです。市町村テーブルの属性は以下のように設定します。

発生件数テーブル
なんらかの統計データを保存するテーブルをひとつ用意します。分類にFactを指定するべきですが、ここではDimensionのままにしておきます。

フィールドタブ
ここでは、先に定義した各テーブルのフィールドを定義していきます。

都道府県テーブルのフィールド
Code(コード)、Name(名称)、Description(摘要)の三つのフィールドを準備します。

Code(コード)
一意のコードを保持するフィールドです。
レポートフィルター: 都道府県テーブルがWEBレポートとして使用される場合、このフィールドをプロンプト(フィルター)として使用します。
ドロップダウンリスト: 都道府県テーブルがWEBレポートとして使用され、このフィールドがプロンプトとして使用される場合、ドロップダウンコントロールを使用します。

高度な設定を使用します。ボタンを押すと専用ダイアログが開きます。
ここでは、入力フォームの設計を行えます。今回は入力スタイルにドロップダウンリスト-検索-説明を表示を指定。

Name(名称)
各コードの名称を保持するフィールドです。

ここでも高度な設定を使用します。設定内容は、Code(コード)フィールドと同じです
Description(摘要)
各行の適用を保持するフィールドです。

ここでも高度な設定を使用します。ボタンを押すと専用ダイアログが開きます。
Description(摘要)には、検索ボタンが要らないのでルックアップボタンの非表示を選択します。

市町村テーブルのフィールド
都道府県、Code(コード)、Name(名称)、Description(摘要)の三つのフィールドを準備します。

都道府県
都道府県コードを保持するフィールドです。(データベース内では都道府県IDが保持されます。)

カスケード: 市町村テーブルがWEBレポートとして使用される場合、このフィールドをカスケード(絞り込み)検索フィルターとして使用します。
結合: 都道府県テーブルとの結合を指定しています。
高度な設定を使用します。ボタンを押すと専用ダイアログが開きます。
ここでは、入力フォームの設計を行えます。今回は入力スタイルにドロップダウンリスト-検索-説明を表示を指定。

Code(コード)
一意のコードを保持するフィールドです。
都道府県テーブルのCode(コード)フィールドと同じ設定。

カスケード: 市町村テーブルがWEBレポートとして使用される場合、先の都道府県コードフィールドと対でこのフィールドをカスケード(絞り込み)検索フィルターとして使用します。
Name(名称)
各コードの名称を保持するフィールドです。
都道府県テーブルのName(名称)フィールドと同じ設定。
Description(摘要)
各行の適用を保持するフィールドです。
都道府県テーブルのDescription(摘要)フィールドと同じ設定。
発生件数テーブルのフィールド
都道府県
都道府県コードを保持するフィールドです。(データベース内では都道府県IDが保持されます。)
市町村テーブルの都道府県フィールドと同じ設定。
市町村
市町村コードを保持するフィールドです。(データベース内では市町村IDが保持されます。)

カスケード: 発生件数テーブルがWEBレポートとして使用される場合、先の都道府県コードフィールドと対でこのフィールドをカスケード(絞り込み)検索フィルターとして使用します。
結合: 市町村テーブルとの結合を指定しています。市町村コード以外に都道府県コードを結合に指定します。
高度な設定を使用します。ボタンを押すと専用ダイアログが開きます。
ここでは、入力フォームの設計を行えます。今回は入力スタイルにドロップダウンリスト-検索-説明を表示を指定。
件数
テストデータの準備
ここまでで基本設定は完了しています。保存ボタンで設定を保存しましょう。
実行ボタンで、ファウンドリは設定情報に従って、データベース、データモデル、メニューレポート等を作成します。しかしながらテストデータの作成オプションを無効化しているのでテストデータの作成はされません。
そこで、テストデータを作成するSQLスクリプトを準備して、後プロセスプロパティに設定します。
USE [日本の会社]
GO
INSERT [dbo].[都道府県] ([Code], [Name], [Description]) VALUES (N'TKO', N'東京都', N'首都')
INSERT [dbo].[都道府県] ([Code], [Name], [Description]) VALUES (N'WKY', N'和歌山県', N'近畿地方')
INSERT [dbo].[市町村] ([Code], [Name], [Description], [都道府県_ID]) VALUES (N'KIT', N'北区', N'Desc 1', 1)
INSERT [dbo].[市町村] ([Code], [Name], [Description], [都道府県_ID]) VALUES (N'TOS', N'豊島区', N'Desc 2', 1)
INSERT [dbo].[市町村] ([Code], [Name], [Description], [都道府県_ID]) VALUES (N'MIN', N'港区', N'Desc 3', 1)
INSERT [dbo].[市町村] ([Code], [Name], [Description], [都道府県_ID]) VALUES (N'KUS', N'串本町', N'Desc 1', 2)
INSERT [dbo].[市町村] ([Code], [Name], [Description], [都道府県_ID]) VALUES (N'KOZ', N'古座川町', N'Desc 2', 2)
このSQLスクリプトをここに設定。
アプリケーションの作成
実行ボタンで、ファウンドリは設定情報に従って、データベース、データモデル、メニューレポート等を作成します。

生成が終了すると、自動でメインページがお手持ちのブラウザで起動します。但し、Sharperlightファウンドリが、Administrator権限で起動されていない場合、Sharperlightサービスの再起動がされていない場合があります。
Sharperlightのクライアントセットアップで、データベースの接続設定を確認後、WindowsサービスダイアログからSharperlightサービスの再起動を行います。

検証
カスケード(絞り込み)検索フィルターの検証を行いましょう。
メインページのTablesメニューから、発生件数を選択します。

都道府県ドロップダウンから東京都を選択します。
次に、市町村ドロップダウンを開きます。いかがでしょうか?東京都の区だけが表示されいますか?

都道府県ドロップダウンで和歌山県を選択するとどうですか?和歌山県に属する市町村のみが表示されましたか?

おわりに
今回は簡単な例を用いてカスケード(絞り込み)検索を作成してみました。是非皆さんの業務にお役立てくださいね。










