[Windowsシステム運用]![]() 第3回 データ接続におけるSQL文を編集する2.InfoPathのデータ接続にサブクエリを記述する兵庫県立西宮香風高等学校システム管理課長Microsoft MVP for InfoPath 松本 吉生 2007/05/24 |
|
|
先の例で、InfoPathのデータ接続には一般的なSQL文を書けることが確かめられたが、単にWHERE句で選択するだけでは実際的でないので、サブクエリを利用したデータ接続を作ってみよう。利用するテーブルとして、先に作った「商品管理」テーブルにフィールド「登録ユーザID」を加えて、そのデータを登録したActive Directoryのユーザー名を記録することとし、それとは別に「ユーザ」テーブルを作って、この2つのテーブルからサブクエリを作成することにしよう。
列名 | データ型 |
商品コード | PK,varchar(10) |
商品名 | varchar(50) |
作者 | varchar(50) |
発行所 | varchar(50) |
分類 | varchar(20) |
登録ユーザID | varchar(50) |
![]() |
|
テーブル名「商品管理」 | |
※赤字のフィールド「登録ユーザID」を追加した。このフィールドには、次の「ユーザ」テーブルに記録した「ユーザID」のどれかを記録しておく。 |
列名 | データ型 |
ユーザ名 | PK,varchar(10) |
ユーザID | varchar(50) |
所属 | varchar(50) |
![]() |
|
テーブル名「ユーザ」 |
「商品管理」の「登録ユーザID」には、商品管理データを登録するときに、SQL Serverからアクティブディレクトリのユーザー名を取得してストアすることとし、「ユーザ」テーブルには、ユーザーに関する次のデータが入っていることとする。
ユーザ名 | ユーザID | 所属 |
松本吉生 | IBM-X40\yoshio | 関西営業部 |
山本次郎 | IBM-X40\jirom | 本店営業部 |
近藤三郎 | IBM-X40\saburom | 本店営業部 |
井上太郎 | IBM-X40\taro | 東京統括本部 |
![]() |
||
「ユーザ」テーブルの内容例 |
ここでテーブル「商品管理」から、ユーザー「松本吉生」が登録した「商品名」のデータだけを抽出するデータ接続を作成したいとき、テーブルに記録された「ユーザID」はActive Directoryのユーザー名であるので、「登録ユーザID」が「IBM-X40\yoshio」である条件を付けて、次のようなSQL文で抽出することができる。
select "商品コード" , "商品名" from "dbo"."商品管理" where "登録ユーザID" = 'IBM-X40\yoshio' |
このとき、「ユーザ」テーブルを使ったサブクエリによって、「松本吉生」というユーザー名で抽出するためには、次のようなSQL文を書けばよい。なお、クエリの結果が確認できるように、「登録ユーザID」のフィールドも取得するようにしている。
select "商品コード" , "商品名" , "登録ユーザID" from "dbo"."商品管理" where "登録ユーザID" = ( select "ユーザID" from "dbo"."ユーザ" where "ユーザ名" = '松本吉生' ) |
![]() |
|||
SQL編集の画面 | |||
|
このデータ接続を保存し、InfoPathのフォームでクエリを実行すると、次のようにActive Directoryのユーザ名「松本吉生」が「登録ユーザID」となっているデータだけを抽出できている。
![]() |
|||
サブクエリによるInfoPathのデータ取得結果 | |||
|
ではInfoPathのデータ接続で、このサブクエリを次のように変更してみよう。サブクエリが複数の値を返すときは、条件の記述に「WHERE 〜 IN」句を使う。
select "商品コード" , "商品名" , "登録ユーザID" from "dbo"."商品管理" where "登録ユーザID" in (select "ユーザID" from "dbo"."ユーザ" where "所属" = '本店営業部' ) |
![]() |
|||
サブクエリの書き換え | |||
SQLの編集でサブクエリを書き換える。 | |||
|
![]() |
|||
実行結果 | |||
WHERE 〜 IN句を使ったサブクエリによるInfoPathのデータ取得結果。 | |||
|
このようなSQL文をデータ接続に用意しておけば、「ユーザ」テーブルの「所属」データを変更することで、柔軟なデータ取得のフォームを作ることができる。
![]() |
![]() |
INDEX | ||
[Windowsシステム運用]InfoPath−SQL Server連携で構築するC/Sシステム | ||
第3回 データ接続におけるSQL文を編集する | ||
1.InfoPathのデータ接続にSELECT文を記述する | ||
![]() |
2.InfoPathのデータ接続にサブクエリを記述する | |
3.InfoPathのデータ接続にDELETE文を記述する | ||
![]() |
![]() |
運用 |
- Azure Web Appsの中を「コンソール」や「シェル」でのぞいてみる (2017/7/27)
AzureのWeb Appsはどのような仕組みで動いているのか、オンプレミスのWindows OSと何が違うのか、などをちょっと探訪してみよう - Azure Storage ExplorerでStorageを手軽に操作する (2017/7/24)
エクスプローラのような感覚でAzure Storageにアクセスできる無償ツール「Azure Storage Explorer」。いざというときに使えるよう、事前にセットアップしておこう - Win 10でキーボード配列が誤認識された場合の対処 (2017/7/21)
キーボード配列が異なる言語に誤認識された場合の対処方法を紹介。英語キーボードが日本語配列として認識された場合などは、正しいキー配列に設定し直そう - Azure Web AppsでWordPressをインストールしてみる (2017/7/20)
これまでのIaaSに続き、Azureの大きな特徴といえるPaaSサービス、Azure App Serviceを試してみた! まずはWordPressをインストールしてみる
![]() |
|
|
|
![]() |