[Windowsシステム運用]

InfoPath−SQL Server連携で構築するC/Sシステム

―― ストアド・プロシージャをInfoPathから実行。IT Proでも自力構築できるC/Sシステム入門 ――

第3回 データ接続におけるSQL文を編集する

1.InfoPathのデータ接続にSELECT文を記述する

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

 本連載では、SQL Serverのストアド・プロシージャをOffice InfoPathから利用する方法について解説する。InfoPathは電子フォーム・ソリューションの開発で利用されるアプリケーションであるが、SQL Serverを呼び出してデータを処理することもできる。Visual BasicやC#などでコードを記述する必要もない。前回は、データ接続のプロパティを変更して、より高度なSQLのクエリを実行する方法を解説した。
 今回は、データ接続におけるSQL文を直接変更、編集する方法について解説する。生成されたSQL文をユーザー自身で変更することにより、さまざまな処理を行ったり、任意のストアド・プロシージャを呼び出したりできる。ただしこの場合、単にSQL文を記述するだけではエラーとなることがあるので、ダミーのSQL文を挿入したり、SET NOCOUNT ON命令を使ったりするとよい。今回はこの方法について解説する。


Index
InfoPathをSQL Serverに接続する
InfoPathのデータ接続を編集する
データ接続におけるSQL文を編集する
InfoPathからSQL文を実行する
ストアド・プロシージャで引数を使う(最終回)

 InfoPathからSQL Serverに接続する「データ接続」は、ウィザードによって自動的に作成できる。このデータ接続は、SQL Serverに対するクエリであるので、ウィザードで生成されたSQL文を編集しても構わないし、まったく新しく自分で書いても構わない。ただしSQL文を自分で書く場合には、一定の制約があり、すべてのSQL文が使えるわけではない。今回はデータ接続にSQL文を書く場合の制約について説明し、さらにDELETE文を使う例について解説する。そして次回では、これらのSQL文をInfoPathから呼び出す方法について解説する。

InfoPathのデータ接続にSELECT文を記述する

 InfoPathから接続するSQL Serverのテーブルとして、前回と同じ次のようなテーブルがあるとする。そしてあらかじめいくつかのデータをテーブルに保存しておく。

列名 データ型
商品コード PK,varchar(10)
商品名 varchar(50)
作者 varchar(50)
発行所 varchar(50)
分類 varchar(20)
テーブル名「商品管理」

 このテーブルに対して、InfoPathから「新しいフォームのデザイン」で「データ接続から新規作成」を行って、データ接続のウィザードを実行する。これまでの整理もかねて、もう一度データ接続ウィザードの流れをまとめよう。

手順1――フォームの新規作成

 「フォームのデザイン」作業ウィンドウで「新しいフォームのデザイン」の「データ接続から新規作成」をクリックする。

新しいフォームのデザイン
「データ接続から新規作成」で新しいフォームをデザインする。
  これをクリックして、データ接続ウィザードを開始する。

手順2――SQL Serverへの接続

 「フォームで使用するデータ接続の種類を選択してください」で「データベース(Microsoft SQL ServerまたはMicrosoft Office Accessのみ)」を選択し、[次へ]ボタンをクリックする。

データ接続の種類の選択
SQL Serverへの接続を選択する。
  これを選択する。
  これをクリックして先へ進む。

手順3――データソースの選択

 [データベースの選択]ボタンをクリックし、[データファイルの選択]で[新しいSQL Server接続.odc]を選択して[開く]をクリックする。


データベースの選択
[データベースの選択]ボタンをクリックしてウィザードを次へ進める。
  これを選択して、データベースを選択する。
  データベース接続の設定ファイルを選択する。
  これをクリックして開く。

手順4――データベース・サーバへの接続

 サーバ名を記述し[次へ]ボタンをクリックする。

データベース・サーバの選択
接続するSQL Serverと接続アカウント情報を指定する。
  サーバ名を入力する。
  これをクリックする。

手順5――データベースとテーブルの選択

 「使用するデータが含まれているデータベースを選択」でデータベース名を選択し、「指定したテーブルに接続」にチェックをして「商品管理」テーブルを選択する。[次へ]ボタンをクリックする。

データベースとテーブルの選択
データベースとオープンするテーブルを選択する。
  使用するデータベース名を選択する。
  接続するテーブル名を指定する。
  これをクリックする。

手順6――設定の保存

 「データ接続ファイルを保存して終了」で[完了]をクリックする。

データ接続ファイルの保存
データベースへの接続情報を保存しておく。
  [完了]ボタンをクリックして設定したデータ接続ファイルを保存し、データ接続ウィザードを終了する。

 ウィザードを終了すると、指定したデータベースとテーブルに対してクエリを行うデータ接続が自動的に生成される。生成されたデータ接続は[SQLの編集]ボタンをクリックすると編集できる。

データ接続ウィザードの完了とSQLの編集
生成されたSQL文を編集することもできる。
  編集対象の選択。
  データ接続ウィザードの最終段階でこれをクリックすると、自動的に生成されたSQL文を編集できる。

 ここで生成されているSQL文は次のようなものである。

select "商品コード","商品名","作者","発行所","分類" from "dbo"."商品管理" as "商品管理"

 これを次のように書き換える。

select "商品コード","商品名","発行所" from "dbo"."商品管理" where "発行所" = 'アトランティック'

 これは「商品管理」テーブルから「発行所」が「アトランティック」であるデータだけを抽出して、「商品コード」と「商品名」、「発行所」を表示する一般的なSQL文である。書き換えたら[SQLステートメントのテスト]ボタンをクリックし、SQL文が正しく認識できるかを確かめよう。「テストに成功しました。SQLステートメントには、InfoPathでXMLスキーマの作成に必要な情報があります。」とのメッセージが出たら、SQL文は正しく記述できている。



SQL文を書き換える
  ウィザードによって自動的に生成されたSQL文。
  書き換えたSQL文。
  これをクリックして、SQL文が正しいかどうかを確認する。
  「テストに成功しました。」のメッセージが出たら、[OK]ボタンをクリックしてSQL文の編集を終了する。

 SQLの編集を終了すると、フォームのデザイン画面に戻る。「データソース」作業ウィンドウには作成したデータソースが表示されており、「query Fields」と「data Fields」がある。どちらのフィールドも展開すると、それぞれに「商品コード」「商品名」「発行所」の、SQL文で指定したフィールドだけが表示されている。「商品管理」テーブルをフォームにドラッグして「繰り返しテーブル」を作成し、[フォームのプレビュー]ボタンをクリックしてフォームを表示させよう。

フォームの編集
フォームの編集画面に戻りフォームを編集する。
  「商品管理」のテーブルが表示されているので、フォームへドラッグして「繰り返しテーブル」を作成する。
  このボタンをクリックして確認する。

 フォームをプレビューしたら[クエリの実行]ボタンをクリックしてデータを呼び出す。するとデータ接続に書いたSQL文どおり、テーブルから「発行所」が「アトランティック」のデータだけを呼び出せていることが分かる。

SQL文によるInfoPathのデータ取得結果
SQLの編集で書き換えたとおり、「発行所」が「アトランティック」のデータだけをInfoPathで取得することができた。
 

 INDEX
  [Windowsシステム運用]InfoPath−SQL Server連携で構築するC/Sシステム
  第3回 データ接続におけるSQL文を編集する
  1.InfoPathのデータ接続にSELECT文を記述する
    2.InfoPathのデータ接続にサブクエリを記述する
    3.InfoPathのデータ接続にDELETE文を記述する
 
 運用


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

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間