メイン データ ソースのフィールドにバインドされているチェック ボックスのオンおよびオフのときの値は、[Check Box Properties] ダイアログ ボックスの [Data] タブにある組み込みの UI を使用して簡単に変更できます。しかし、セカンダリ データ ソースのフィールドにバインドされているチェック ボックスのオンおよびオフのときの値を変更するには、ビューの .xsl ファイルを手動で変更する必要があります。
.xml ファイルにデータ接続を追加する場合、InfoPath では、各フィールドおよび属性のデータ型の検出は行われず、すべてに対して単純にテキスト (string) データ型が割り当てられます。これは場合によっては不便ですが、修正できます。
テキスト (string) データ型のフィールドのチェック ボックスをビューに挿入する場合、それがメイン データ ソースとセカンダリ データ ソースのどちらにバインドされているかに関係なく、InfoPath では、常にオンのときの値が yes (オン)、オフのときの値が no (オフ) になります (図 1 を参照)。

図 1 テキスト (string) データ型フィールドの場合、オンのときの値に yes (オン)、オフのときの値に no (オフ) が使用されます。
ブール値データ型のフィールドのチェック ボックスをビューに挿入する場合、それがメイン データ ソースかセカンダリ データ ソースかに関係なく、InfoPath では、常にオンのときの値が true (はい)、オフのときの値が false (いいえ) になります (図 2 を参照)。

図 2 ブール値データ型フィールドの場合、オンのときの値に true (はい)、オフのときの値に false (いいえ) が使用されます。
図 1 および 2 では、セカンダリ データ ソースにあるフィールドにバインドされているチェック ボックスのオプションが淡色表示になっており、オンおよびオフのときの値を変更する機能がないことを示しています。フォームでこれらの値を yes/no (オン/オフ) または true/false (はい/いいえ) 以外の値にする場合は、ビューの .xsl ファイルを編集してこれらの値を変更する必要があります。
このタスクでは、ブール値を保持する 2 つのフィールドを持ち、セカンダリ データ ソースを含むフォームを作成します。これに対して、InfoPath では、テキスト データ型を使用するスキーマが作成されます。そこで、ビューの .xsl ファイルを編集して、1 つ目のチェック ボックスのオンおよびオフのときの値としてそれぞれ 1 および 0 を使用し、2 つ目のチェック ボックスのオンおよびオフのときの値としてそれぞれ Present および Absent を使用するように変更します。まず、セカンダリ データ ソースの作成から始めます。
セカンダリ データ ソースの作成
次のコードをテキスト エディタにコピーし、Booleans.xml という名前でファイルを保存します。このファイルを、これから作成するフォームのセカンダリ データ ソースとして使用します。
<?xml version="1.0" encoding="UTF-8"?> <Booleans> <ItemAvailable/> <StudentAttendance/> </Booleans> |
フォームにセカンダリ データ ソースを追加する
- 新しい空白のフォームをデザインします。
- [Tools] メニューの [Data Connections] をクリックし、[Add] をクリックします。
- Data Connection Wizard (データ接続ウィザード) の [Receive Data] をクリックし、[Next] をクリックします。
- [XML Document] をクリックし、[Next] をクリックします。
- [Browse] をクリックし、Booleans.xml ファイルを探して選択し、[Open] をクリックしてから、[Next] をクリックします。
- [Finish] をクリックし、[Yes] をクリックしてから、[Close] をクリックします。
ビューに 2 つのチェック ボックスを追加する
- [Data Source] 作業ウィンドウを開きます。
- [Booleans] セカンダリ データ ソースをクリックします。
- [ItemsAvailable] を右クリックし、[Check Box] をクリックし、Enter キーを押します。
- [StudentAttendance] を右クリックし、[Check Box] をクリックします。
ビューの .xsl ファイルを変更する
- [File] メニューの [Extract Form Files] をクリックします。
- 取り出したフォーム構成ファイルの保存先を選択し、[OK] をクリックします。
- InfoPath を終了して、フォーム構成ファイルに対するロックを解除します。
- テキスト エディタを使用して、ビューの .xsl ファイルを開きます。
1 つ目のチェック ボックスのオンおよびオフのときの値を変更する
- テキスト「xd:offValue="no"」を検索し、1 つ目のチェック ボックス コントロールを表す input 要素を探します (日本語環境では「xd:offValue="オフ"」で検索してください)。
- 1 つ目の input 要素は次のようになっています (日本語環境では "no" および "yes" は "オフ" および "オン" になります)。
xd:offValue="no" xd:onValue="yes" |
これを次のように変更します。
xd:offValue="0" xd:onValue="1" |
- テキスト「"yes」を検索して、次の行を探します (日本語環境では "yes" は "オン" になります)。
ItemAvailable="yes" |
これを次のように変更します。
ItemAvailable="1" |
2 つ目のチェック ボックスのオンおよびオフのときの値を変更する
- テキスト「xd:offValue="no"」を検索し、2 つ目のチェック ボックス コントロールを表す input 要素を探します (日本語環境では「xd:offValue="オフ"」で検索してください)。
- 2 つ目の input 要素は次のようになっています (日本語環境では "no" および "yes" は "オフ" および "オン" になります)。
xd:offValue="no" xd:onValue="yes" |
これを次のように変更します
xd:offValue="Absent" xd:onValue="Present" |
- テキスト「"yes」を検索して、次の行を探します (日本語環境では "yes" は "オン" になります)
StudentAttendance="yes" |
これを次のように変更します。
StudentAttendance="Present" |
変更のレビュー
- ビューの .xsl ファイルを保存し、テキスト エディタを閉じます。
- manifest.xsf ファイルを右クリックし、[Design] をクリックして、フォーム テンプレートを再度開きます。
2 つのチェック ボックスの [Check Box Properties] ダイアログ ボックスを表示すると、図 3 のように、オンおよびオフのときの値に対する変更が反映されているはずです。更されたチェック ボックスを削除しないで新しいチェック ボックスを挿入すると、再バインドした場合でも更新された値が維持されます。

図 3. オンおよびオフのときの値が手動で変更されています。
©2005 Greg Collins. All rights reserved. Licensed to Autonomy Systems, LLC for display on InfoPathDev.com.