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

第4回 InfoPathからSQL文を実行する

3.ストアド・プロシージャを実行するボタンを作成する

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

 ストアド・プロシージャを実行するためのデータ接続が完成したら、次はフォーム上からこのデータ接続を実行するためのボタンを作成する。ボタンをクリックすることでデータ接続のSQL文を発行し、SQL Serverにストアド・プロシージャを実行させるようにするのだ。

 [作業ウィンドウ]を[コントロール]作業ウィンドウに変更し、ボタンをフォームの適切な位置にドラッグする。できたボタンを右クリックして[ボタンのプロパティ]を開く。[動作規則]のボタンをクリックし、[追加]ボタンをクリックして動作を追加する。追加する動作は、[データ接続を使用してクエリを送信する]であり、データ接続として先に作成した[商品コードの生成]を選択する。設定した動作には分かりやすい名前を付け、ボタンのラベルも[商品コードの生成]としておこう。

ストアド・プロシージャを実行するボタンの動作規則の設定
ボタンの動作規則を設定する。
  作業ウィンドウを[コントロール]作業ウィンドウに変更する。
  [ボタン]コントロールをフォームにドラッグする。
  ボタンを右クリックして[ボタンのプロパティ]をクリックする。
  [動作規則]ボタンをクリックする。
  [追加]ボタンをクリックする。
  [動作の追加]ボタンをクリックして動作を設定する。
  設定した動作規則を確認する。
  動作規則に分かりやすい名前を付ける。
  ボタンに「商品コードの生成」というラベルを付ける。
  [商品コードの生成]ボタンが作成されている。

ストアド・プロシージャの実行を確認する

 フォームをプレビューしてストアド・プロシージャの実行を確認する前に、メイン接続のSQL文を訂正しておこう。このフォームのメイン接続は編集してサブクエリを書き、本店営業部のユーザーが登録したデータしか取得しないようになっていたからだ。[ツール]メニューの[データ接続]をクリックし、メイン接続のSQL文から「where」以降を削除しよう。

SQL文の修正
メイン接続のSQL文を訂正する。
  サブクエリを加えて編集されたSQL文。
  where以下のサブクエリを削除した状態。

 メイン接続のSQL文を修正したら、フォームをプレビューして確認する。この時点では、DELETE文を実行したためにテーブルにはデータがないので、[クエリの実行]ボタンをクリックしてもデータは何も得られないはずだ。

クエリの実行
フォームをプレビューしてクエリを実行する。
  テーブルのデータを削除したので、データが返されないことが通知される。

 次に[商品コードの生成]ボタンをクリックしてみよう。するとアイコンが砂時計に変わり、しばらく待たされる。このとき、ウィンドウ下部のステータス・バーに「データソースに接続中です。しばらくお待ちください」のメッセージが表示されている。このとき、SQL Serverではストアド・プロシージャが実行され、1000から9999までの8999件の商品コードが生成されている。

 そして[クエリの実行]ボタンをクリックすると、「クエリにより膨大なデータが返されたので、フォームのレンダリングには少し時間がかかります。続行しますか?」というメッセージが返される。しばらく待つと、商品番号1000から9999までのデータが取得できることが確認できる。

クエリの実行
商品コードを生成した後にクエリを実行する。データが多いので完全に取得するまでに時間がかかるが、ストアド・プロシージャによって生成した商品コード1000から9999までのデータが表示される。

 さらにこの後で[データを全部削除する]のボタンをクリックしてから[クエリの実行]ボタンをクリックすると、データが消去されることが確認できる。[商品コードの生成]ボタンと[データを全部削除する]のボタンをそれぞれクリックしてから[クエリの実行]ボタンをクリックし、データの削除と生成が確かに実行できることを確認しよう。

 前回と今回は、InfoPathのデータ接続でSQL文を書くときの工夫と、InfoPathのフォームからストアド・プロシージャを実行する方法を説明した。今回InfoPathのフォームから実行したのは、execute文でストアド・プロシージャ名を指定するだけの、最も単純なストアド・プロシージャの実行方法だが、次回(最終回)はストアド・プロシージャの実行時に引数を使う工夫を紹介しよう。End of Article


 INDEX
  [Windowsシステム運用]InfoPath−SQL Server連携で構築するC/Sシステム
  第4回 InfoPathからSQL文を実行する
    1.DELETE文を記述したデータ接続を実行する
    2.ストアド・プロシージャを実行するデータ接続を作成する
  3.ストアド・プロシージャを実行するボタンを作成する

 運用


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

注目のテーマ

Windows Server Insider 記事ランキング

本日 月間