<第6回>

InfoPathでデータを送信する

兵庫県立西宮香風高等学校 松本吉生

ymatsumoto@hyogo-c.ed.jp

 
<<前のページへ
 

送信ボタンを作る

   
 

前回まで作ったフォームで、Accessデータベースからデータを受信できることがわかった。今回はフォーム上に受信したデータを変更し、データベースへ送信できるようにしよう。

まずフォームのプレビューをしたままなら、プレビューを閉じよう。メニューにある「プレビューを閉じる」ボタンをクリックするか、フォームの右上「×」で閉じてもいい。するとフォームテンプレートの編集画面に戻るはずだ。

データを送信できるようにするには「送信」機能を持ったボタンを配置すればよい。ボタンは「コントロール」のひとつなので、右側の「作業ウィンドウ」で「コントロール」をクリックし、作業ウィンドウを「コントロール」作業ウィンドウに変えるとよい。

   
 
   
 

「コントロール」作業ウィンドウの「コントロールの挿入」には様々なコントロールが並んでいる。その中から「ボタン」をクリックし、「クエリの実行」ボタンの右側へドラッグする。すると「ボタン」という名前の入った新しいボタンがフォーム上にできる。

   
 
   

ボタンの「操作」を決める 

   
 

ボタンができたら、このボタンをクリックしたときの働きを決める。それにはボタンを右クリックして「プロパティ」をクリックする。あるいは、ボタンをダブルクリックしても、プロパティを表示することができる。

   
 
   
 

ボタンをクリックしたときの働きは、ボタンのプロパティの「全般」タブ、「操作」で設定する。ここにはボタンに設定できる動作がドロップダウンリストで選べるようになっている。

このときに表示される選択肢は、InfoPathのバージョンやサービスパックのあるなしによって違うので、必ずしも次の画面と同じであるとは限らない。またデータ接続の作り方によっても違ってくる。

リストの中から「送信」を選択しよう。

   
 
   
 

操作に「送信」を選択したら「OK」をクリックする。すると次に「フォームの送信」ウィンドウが表示される。ここでは送信に関する詳細を設定するが、「送信コマンドおよびボタンを有効にする」が選択されていること、「送信先」が「データベース」になっていることを確認する。

このとき、もし送信先に「データベース」を選択できなかった場合は、データ接続に問題がある。そのときのチェックポイントとして、まずデータベースの接続先は「テーブル」でなければならない。またAccessの「クエリ」やSQL Serverの「ビュー」に接続した場合は送信できない。

接続先のテーブルに「主キー」がなくても送信できない。このことを知らずに、テーブルに主キーを作らずにデータ接続を作って、送信できないと悩むケースが多いようだ。テーブルに主キーがないことに気付いたら、テーブルを編集して主キーを作り、InfoPathのデータ接続を編集しなおすとよい。InfoPathのデータ接続を編集しなおすには、「ツール」メニューの「データ接続」をクリックし、対象のデータ接続を選択して「変更」ボタンをクリックする。ウィザードに従ってすすめばデータ接続を更新することができる。

もし送信先に「データベース」が選べない場合は、接続先のテーブルやデータ接続を見直そう。

   
 
   
 

「OK」ボタンをクリックすると「ボタンのプロパティ」画面に戻る。操作を「送信」に設定する、ボタンの「ラベル」も「送信」に変わっていることがわかる。

「OK」ボタンをクリックして「ボタンのプロパティ」を完了しよう。

   
 
   
 

「送信」ボタンができた。

   
 
   

フォームを開きデータを受信する 

   
 

ではこのフォームを使って、Accessデータベースのデータを変更してみよう。「フォームのプレビュー」ボタンをクリックするか、「ファイル」メニューの「フォームのプレビュー」−「既定」をクリックする。

   
 
 
   
 

まずAccessデータベースからデータを取得するため、「クエリの実行」ボタンをクリックする。

   
 
   

データを変更し送信する

   
 

ここで呼び出されたAccessデータベースのデータは、機械的に土曜日と日曜日を授業のない日、つまり「授業日」データを「2」とし、月曜日から金曜日までを授業のある日、つまり「授業日」データを「1」として作ったものだった。

しかし実際は、たとえば4月の最初は春期休業中なので授業がないはずだ。そこで4月1日(火)から4月4日(金)までの日を授業のない日と設定するために、「授業日」フィールドの値を「2」に変更する。

変更できたら「送信」ボタンをクリックする。すると、その時点のフォームのデータがAccessデータベースへ送信される。

   
 
 
   
  「フォームが正しく送信されました。」というメッセージが返ってくれば、データの更新が成功している。
   

InfoPathで更新されたデータをAccessで確認する

   
 

InfoPathのフォームからデータを送信することで、Accessデータベースのデータが変更されたはずだ。これをAccessで確認しよう。

Accessを起動し、InfoPathの接続ターゲットになったAccessデータベースファイルを開いてみる。

   
 
   
 

すると「授業日」テーブルの2008年4月1日(火)から4月4日(金)までの「授業日」データが「2」に変更されていることがわかる。InfoPathからのデータ送信が成功したのだ。

 
   
このページのまとめ
   
 

このページでは、InfoPathのフォームに「送信」ボタンを作り、フォーム上に呼び出したデータを変更してデータベースに送信し、Accessデータベースのデータが書き換えられたことを確認した。これでInfoPathのフォームを使ってデータを送受信する基本的なロジックは完成した。しかしこのフォームは、まだ実用的なものではない。次回からはこのフォームにいくつかの仕掛けを組み込み、データ編集しやすく、かつ間違いにくい入力フォームに作りかえていく。

なお、このページでは、特に断りのない限り、Access2003とInfoPath2003を使って説明している。クライアントコンピュータのOSはWindowsXPで、サーバは特に使っていない。

       
  mailto:ymatsumoto@hyogo-c.ed.jp :←ここをクリックして筆者にメールを送る
       
 
matsumotoyoshio.com 2008/1/31