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

第2回 InfoPathのデータ接続を編集する

4.セカンダリ・データ接続を編集し、distinct句を利用する

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

 SQL Serverからテーブルの値を取得するとき、重複した値がある場合に最初のレコードだけを取得させるには、select文中に「distinct」句を指定すればよい。具体的にはデータ接続のSQL文を変更して加える。

 InfoPathのツール・バーから[ツール]−[データ接続]をクリックし、作成されたセカンダリ・データソース「在庫管理のリストボックス項目取得」を編集してみよう。データ接続ウィザードで[SQLの編集]ボタンをクリックすると、次のSQL文が表示される。

select "管理番号","仕入日","商品名","仕入れ先" from "dbo"."在庫管理" as "在庫管理"

[在庫管理のリストボックス項目取得]セカンダリ・データソースの編集
ウィザードに従って漫然と作ったので、不必要な項目も取得している。

 このセカンダリ・データソースは「仕入れ先」を取得するために利用するのだが、データ接続ウィザードに従って漫然とデータ接続を作ったので、「管理番号」や「仕入日」、「商品名」など、リストボックス項目として不要なものも含まれている。SQL文を次のように編集して重複したデータが表示されないようにし、必要なデータだけがうまく取得できるように変更しよう。

select distinct "仕入れ先" from "dbo"."在庫管理" as "仕入れ先リスト" order by "仕入れ先"

※赤字部分は編集して付け加えた部分

編集したセカンダリ・データ接続
distinct句を加え、不要なフィールド名を削除し、as句でテーブル名の別名を付け、最後に並べ替えのorder by句を加えた。
  編集したSQL文。

 ここではテーブルのプライマリ・キーである「管理番号」を不要なものとしてSQL文から削除した。すると[OK]ボタンをクリックすると、主キーを追加するかを問われる警告メッセージが表示される。しかしここではフィールドをツリー・ビューで表示する必要はないので、[いいえ]をクリックして構わない。

主キーを追加するメッセージ
ウィザードは主キーがないとの警告メッセージを出すが、主キーがなくてもツリー・ビューが表示できないだけなので[いいえ]をクリックして構わない。
  これを選択する。

 データ接続を編集したら、ドロップダウン・リストボックスのプロパティを再度開き、リストボックス項目を設定し直す必要がある。ここでデータ接続を確認すると、テーブル名として別名を指定した[仕入れ先リスト]になっていることが確認できる。

ドロップダウン・リストボックスの[フィールドまたはグループの選択]画面
編集したデータ接続「在庫管理のリストボックス項目取得」を指定すると、as句で付けたテーブルの別名「仕入れ先リスト」が確認できる。
  別名が付けられたテーブル名。

 ドロップダウン・リストボックスの項目が再設定できたら、プレビューで動作を確認する。リスト項目が重複なしで表示され、かつ名前で並べ替えられていることが分かる。このようにデータ接続を編集すると、元のテーブルからデータを取得し、ドロップダウン・リストボックス項目として利用することもできるのである。

フォームのプレビュー
ドロップダウン・リストボックスの項目がうまく利用できている。
 

 INDEX
  [Windowsシステム運用]InfoPath−SQL Server連携で構築するC/Sシステム
  第2回 InfoPathのデータ接続を編集する
    1.InfoPathのデータ接続の編集
    2.データソースのデータの並べ替え順序を変更する
    3.メイン・データソースのデータをリストボックス項目として利用する
  4.セカンダリ・データ接続を編集し、distinct句を利用する
    5.ユーザー名や日付、時刻を取得する
    6.SQL Serverから取得したデータの利用
 
 運用


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

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間