<第7回>

ドロップダウンリストボックスを使う

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

ymatsumoto@hyogo-c.ed.jp

 
<<前のページへ
 

データの入力支援

   
 

前回までに作ったフォームで、AccessデータベースのデータをクライアントコンピュータのInfoPathフォームで受信し、変更して送信することができる。基本的なクライアントサーバシステムの骨格ができた訳だ。しかしこのフォームでは良い入力システムとは言えない。

まず、このデータ接続では、「年月日」と「曜日」、そして「授業日」をやりとりすることができるが、変更してよいのは「授業日」データだけであり、「年月日」や「曜日」のデータは変更してはならない。したがってこのフォームのままでは、変更してはいけない部分を間違って変更してしまう危険性がある。

次に「授業日」のデータは、「1」ならば授業がある日で「2」ならば授業がない日というコード化がされている。この数値をキーボードから入力するのはわかりにくいし間違う可能性がある。

InfoPathのフォームでは、このようにデータ操作時に間違う危険性のあるデータに対して、入力できる値に制限を加えたり、入力フィールドをマウス操作で入力できるリストボックスにしたり、値によって表示形式を変えるなどで操作者に注意をうながしたりすることができる。そしてこのような「入力支援」を作りこむのに、一行もコードを書く必要はない。

今回から(1)ドロップダウンリストボックスを作る、(2)変更してはならないフィールドを読み取り専用にする、(3)データの挿入と削除を禁止する、(4)授業がある日と授業のない日を色分けする、(5)フォームを開いたときに自動的にデータを取得する、といった入力支援の仕掛けを作ることを説明していこう。

   

テキストボックスをドロップダウンリストボックスに変更する

   
 

その日が授業のある日かない日かを設定する「授業日」フィールドのテキストボックスをドロップダウンリストボックスに変更しよう。キーボードで入力して値を変更するのではなく、リストから選ぶようにしたほうが間違いが少なく、設定もわかりやすいことが期待できる。

ドロップダウンリストボックスはコントロールのひとつなので、新しく作る場合は「コントロール作業ウィンドウ」から選べばよい。しかしこの場合は、すでにフォーム上に生成しているテキストボックスをドロップダウンリストボックスに変更すればよいので、テキストボックス上でマウスを右クリックし、「変更」を選択することでドロップダウンリストボックスに変更することができる。

   
 
 
 
 
   

ドロップダウンリストボックスのプロパティを編集する

   
 

次にドロップダウンリストボックスのプロパティを編集し、リストに表示される項目を設定する。ドロップダウンリストボックスのプロパティを編集するには、ドロップダウンリストボックスを右クリックして「ドロップダウンリストボックスのプロパティ」をクリックする。またはドロップダウンリストボックスをダブルクリックしていもいい。

   
 
   
 

ドロップダウンリストボックスのプロパティでは、リストボックスに表示する選択項目を、「リストボックス項目を手動で入力する」、「フォームのデータソースで値を検索する」、「データ接続の値をデータベース、Webサービス、ファイル、SharePointライブラリまたはリストで参照する」の3つから選ぶことができる。

「リストボックス項目を手動で入力する」は最もわかりやすいもので、ドロップダウンリストボックスのプロパティ画面で項目を入力する方法だ。わかりやすいが、選択肢を変更するにはフォームを再編集する必要があり、しかもドロップダウンリストボックスを個々に再編集しなければならない。

「フォームのデータソースで値を検索する」は、フォームに生成したデータソースの中から値を取得する方法だ。フォームを入力しながら動的に値を設定できる。

「データ接続の値をデータベース、Webサービス、ファイル、SharePointライブラリまたはリストで参照する」は、選択肢項目の変更に対して最も柔軟に運用できる方法だ。選択肢の項目をデータベースなどInfoPathフォームとは別に置いておくことで、選択肢の項目を一元的に管理することが可能になる。また選択肢の項目をXMLファイルにして「リソースファイル」としてフォームに取り込むこともできる。

   

リストボックス項目を手動で入力する

   
 

ここでは後に項目を変更する可能性がなく、他のフォームでも使うことがないと想定し、最も簡単でわかりやすい「リストボックス項目を手動で入力する」を使うことにしよう。

   
 
   
 

ドロップダウンリストボックスのプロパティが表示されたら、「リストボックス項目」が「リストボックス項目を手動で入力する」になっていることを確認し、「追加」ボタンをクリックする。すると「選択肢の追加」ウィンドウが表示されるので、選択肢として表示させたい項目をひとつずつ登録していく。

このフィールドは、入力データ「1」が「授業のある日」、で「2」が「授業のない日」だったので、まず「値」に「1」を、「表示名」に「授業のある日」と入力し、「OK」ボタンをクリックして登録する。

   
 
 
 
   
 

「授業のある日」選択肢の項目が設定できた。さらに「追加」ボタンをクリックし、「授業のない日」の選択肢も登録しよう。

   
 
 
 
   
 

リストボックス項目の作成が完了したら「OK」ボタンをクリックしてプロパティの編集を終了する。

   

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

   
 

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

   
 
   
 

「授業日」フィールドがドロップダウンリストボックスになっている。「クエリの実行」ボタンをクリックしてデータを呼び出してみよう。

   
 
   
 

「授業日」フィールドに記録されているデータは「1」か「2」だが、ドロップダウンリストボックス上ではそれぞれ「授業のある日」と「授業のない日」に表示されている。

   

データの変更と送信

   
 

ドロップダウンリストボックスが機能していることを確かめるために、試しに4月1日を「授業のある日」にしてみよう。ドロップダウンリストボックスを変更し、「送信」ボタンをクリックしよう。

   
 
 
 
   

Accessデータベースのデータを確認する

   
 

ではデータがInfoPathのフォームから変更されたことを確かめよう。Accessを起動してデータベースのファイルを開いてみる。すると次のように、4月1日の「授業日」フィールドが、授業日である「1」の値に変わっていることが確認できる。

   
 
 
   
このページのまとめ
   
 

このページでは、InfoPathの入力支援となる「ドロップダウンリストボックス」の作り方を説明した。データをキーボードから入力するのではなく、ドロップダウンリストボックスで行うと入力間違いが少なくなる。InfoPathなら一行もコードを書かずにドロップダウンリストボックスを作り、リスト項目を作成することができる。次回はデータの追加や削除ができないようにする設定を説明する。

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

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