[Windowsシステム運用]
InfoPath−SQL Server連携で構築するC/Sシステム

第1回 InfoPathをSQL Serverに接続する

4.ドロップダウン・リストでセカンダリ・データソースを利用する

兵庫県立西宮香風高等学校システム管理課長
Microsoft MVP for InfoPath
松本 吉生
2007/01/25

セカンダリ・データソースの利用

 このようにして作ったフォームで「仕入れ先」で抽出するためには、テキストボックスに仕入れ先名を入力しなければならないが(前ページの最後の実行例では「A商会」と手動入力している)、テキストボックスをドロップダウン・リストボックスにすると、マウス操作で仕入れ先を選択できるようになる。コントロールの種類を変更するには、テキストボックスを右クリックし、表示されるポップアップ・メニューの中から[変更]−[ドロップダウン・リストボックス]を選択する。

コントロールの種類を変更する
コントロールの種類を変更するには、変更したいコントロールを右クリックし、[変更]メニューの中から選択する。
  変更したいコントロールを右クリックする。
  [変更]−[ドロップダウン リスト ボックス]を選択する。

 ドロップダウン・リストボックスの[プロパティ]では、リストボックス項目として3つの方法が選択できる(次の画面参照)。デフォルトは[リストボックス項目を手動で入力する]だが、せっかくデータベースを使っているのだから、リストボックス項目もデータベースに保存しておき、フォームを開いたときにデータベースから呼び出すことにしよう。リスト項目をコントロールに手動で入力した場合は、後からリスト項目を変更したいとき、そのつどフォームを編集し直さなければならないが、データベース側に置いた場合は、データベース側でリスト項目を変更するだけでフォームに反映されるようになる。これは、データベースに対して複数のフォームを作って運用する場合や、複雑なフォームを作ったときに、リスト項目を統一的に管理できる大きなメリットがある。

ドロップダウン・リストボックスのプロパティ
リストボックス項目として3つの方法が選択できる。デフォルトでは[リストボックス項目を手動で入力する]になっている。
  ここで種類を変更する。後述のセカンダリ・データソースを設定後、一番下の[データ接続の値を……]にすること。

 ここでまず、InfoPathでリストボックス項目を設定する前に、SQL Serverにリストボックス項目を保存するテーブルを作る。テーブル名は「仕入れ先」とし、フィールド「会社名」に仕入れ先名称データを保存しておく。

会社名
A商会
B商会
C商会
リストボックス項目として使うテーブル
SQL Serverにこのテーブルを作り、テーブル名を「仕入れ先」としておく。ここでは3つのレコードを定義している。

 テーブルを作ったら、このテーブルをフォームから接続してドロップダウン・リストボックス項目として利用するには、データ接続を新しく作る。データ接続を追加するには、ツール・バーから[ツール]メニューの[データ接続]をクリックしてデータ接続ウィンドウを表示し、[追加]ボタンでウィザードを開始する。

データ接続の追加
データ接続を追加するには、[ツール]メニューの[データ接続]を実行する。
  これを選択する。

 フォーム作成時に最初に作ったデータ接続は「メイン・データソース」といい、データの送信と受信、クエリを行うことができる。しかし2つ目以降に作るデータ接続は「セカンダリ・データソース」といい、データの送信と受信のいずれかでしか利用できない(ただしデータの送信ではSQL Serverに接続できない)。

セカンダリ・データソースのデータ接続ウィザード
セカンダリ・データソースでは「受信」か「送信」かのどちらかを選択する。
  送信する場合。
  受信する場合。ドロップダウン・リストボックスで参照する場合は、こちらを選択する。

 データ接続ウィザードは、メイン・データソースを作るときとほぼ同じ手順で進む。ウィザードが完了したら、セカンダリ・データソースとして先に作った「仕入れ先」テーブルに接続することができ、データソース作業ウィンドウで確認することができる。セカンダリ・データソースは、先に述べたように、クエリを実行することができないので、queryFieldsはなくdataFieldsだけが存在する。

データソースの確認
データソース作業ウィンドウでデータソースを変更し、セカンダリ・データソースを確認することができる。セカンダリ・データソースにはクエリを行うためのqueryFieldsがない。
  メイン・データソースからセカンダリ・データソースに変更する。
  セカンダリ・データソースではdataFieldsのみで、queryFieldsは存在しない。

 セカンダリ・データソースを作れば、これをドロップダウン・リストボックスの項目として利用できる。ドロップダウン・リストボックスの[プロパティ]を開き、リストボックス項目を[データ接続の値をデータベース、Webサービス、ファイル、SharePointライブラリ、またはリストで参照する]に変更する。そしてデータ接続をセカンダリ・データソースの「仕入れ先」に変更、エントリはSQL Serverのテーブルにバインドされた「仕入れ先」繰り返しグループにする。値と表示名は自動的に「@会社名」となるので確認する。

ドロップダウン・リストボックスのプロパティ
データ接続にセカンダリ・データソースを指定すると、リストボックス項目をデータベースから取得することができる。
  データベースの値を参照する。
  データ接続の指定。
  エントリの指定。
  参照するフィールドの値と名前。

 以上の設定後[フォームのプレビュー]を実行すると、次のように、「仕入れ先」をドロップダウン・リストボックスから選択できる。

ドロップダウン・リストボックスの利用
ドロップダウン・リストボックスの項目に、データベースの値を利用することができた。
  リストボックスから選択できる。

 今回はInfoPathからSQL Serverに接続する方法と、データ接続について説明した。次回はデータ接続を編集する方法を取り上げる。End of Article


 INDEX
  [Windowsシステム運用]InfoPath−SQL Server連携で構築するC/Sシステム
  第1回 InfoPathをSQL Serverに接続する
    1.InfoPathからSQL Serverのストアド・プロシージャを呼び出す
    2.SQL Serverに接続するためのデータ接続を作成する
    3.データ接続の確認とフォームでの利用
  4.ドロップダウン・リストでセカンダリ・データソースを利用する
 
 運用


Windows Server Insider フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間