<第5回>

InfoPathでデータを取得する

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

ymatsumoto@hyogo-c.ed.jp

 
<<前のページへ
 

「クエリフィールド」と「データフィールド」

   
 

InfoPathで新しいフォームを「データ接続から新規作成」し、データ接続ウィザードが終了すると、次のようなフォームができているはずだ。

   
 
   
 

右側の「作業ウィンドウ」にある「データソース」には、接続先のデータベースにあるフィールドが表示されている。ここには「queryFields」と「dataFields」と書かれた2つのフォルダがあることがわかる。「クエリフィールド」と「データフィールド」だ。「+」のアイコンをクリックして展開してみよう。

クエリフィールドとデータフィールドには、どちらにも接続先のAccessデータベースのフィールドが表示されているが、クエリフィールドとデータフィールドの役割は違いがある。クエリフィールドはフォームにデータを読み込むときに絞り込みを行うためのフィールドで、データフィールドは実際のデータが入っているフィールドなのだ。

   
 
   

クエリフィールドをフォームに配置する

   
 

フォームには「ここにクエリフィールドをドラッグしてください」と書かれたところがある。ここに作業ウィンドウからクエリフィールドの「授業日」グループをドラッグする。すると「コントロール付きセクション」、「セクション」、「レイアウト用の表内のコントロール」、「コントロール」の4つのメニューが表示される。

「コントロール」はデータの入るテキストボックスやボタンなど、InfoPathで操作をするための「部品」のことで、「セクション」はデータソースのテーブルと関連付けられた箱のような概念のものである。「セクション」がテーブルと関連付けられ、その中に配置された「コントロール」がテーブル内のフィールドに対応する、という関係になる。「レイアウト用の表」は、コントロールやテキストを整列するための表だ。

ここで「レイアウト用の表内のコントロール」を選ぶと、「年月日」、「曜日」、「授業日」のフィールドが、レイアウト用の表の中にテキストボックスのコントロールとして生成する。

   
 
 
   

データフィールドをフォームに配置する

   
 

次にフォームの「ここにデータフィールドをドラッグしてください」と書かれたところに、作業ウィンドウのデータフィールドから「授業日」グループをドラッグする。すると「繰り返しテーブル」、「コントロール付き繰り返しセクション」、「繰り返しセクション」、「マスタと詳細」のメニューが表示される。

「繰り返しテーブル」も「繰り返しセクション」もデータベースのテーブルに関連付けられた箱である。テーブルには複数行のデータが入っているので、それぞれのフィールドのデータが「繰り返される」という意味で「繰り返し」という名前になっている。

ここでは「繰り返しテーブル」を選択してみよう。

   
 
 
   
  フォームには「クリックしてタイトルを追加してください」というところがある。ここに「年月日テーブル編集フォーム」とタイトルを書こう。「クリックしてフォームの内容を追加してください」というところには、「授業日の設定を確認、変更するフォームです」と説明を書こう。
   
 
   

フォームのプレビューとクエリの実行

   
 

「ファイル」メニューの「フォームのプレビュー」から「既定」をクリックするか、フォーム上部のメニューボタンの「フォームのプレビュー」ボタンをクリックすると、完成したフォームテンプレートの動作を確かめることができる。

   
 
   
 

プレビューができたら、「クエリの実行」ボタンをクリックしよう。するとデータベースにクエリが送信され、Accessデータベースに登録されている一年間の年月日データが取得される。

   
 
   
 

次に、クエリフィールドの「曜日」テキストボックスに「日」と入力して「クエリの実行」ボタンをクリックしよう。すると「曜日」が「日」だけのデータを問い合わせるクエリがデータベースに送信される。得られたデータは日曜日だけのデータのはずだ。

このようにクエリフィールドはデータの絞り込みを行うときに利用する。

   
 
   
 

クエリフィールドの「曜日」テキストボックスに入力した「日」をクリアし、「授業日」テキストボックスに「2」と入力して「クエリの実行」ボタンをクリックしよう。「授業日」データが「2」つまり授業がない日に設定されているのは、この時点では土曜と日曜だけなので、土曜と日曜だけのデータが得られるはずだ。

   
 
   
 

では最後に「年月日」のフィールドを見てみよう。このフィールドには右側にカレンダーを意味したアイコンが表示されている。このアイコンをクリックすると、カレンダーから日を選べるようになる。これは単なるテキストボックスではなく、「日付の選択」コントロールという。

このコントロールは、データソースからクエリフィールドの「授業日」グループをドラッグしたときに自動的に生成した。InfoPathはデータソースのフィールドの「データ型」にあわせて、最も適切なコントロールを自動的に生成するのだ。

まず「授業日」フィールドに入力した「2」をクリアし、カレンダーから「2008年4月1日」を選択して「クエリの実行」ボタンをクリックしよう。すると2008年4月1日のデータだけが得られるはずだ。

   
 
 
   
このページのまとめ
   
 

このページでは、InfoPathの「クエリフィールド」と「データフィールド」の違いを説明し、これらのデータフィールドを使うってデータを受信することをした。次回はこのAccessデータベースファイルに対して、データを送信できるようにフォームを変更する。

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

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