チェックボックス等の「トリプルステート」プロパティ

f:id:accs2014:20170621001609p:plain:right:w400

 フォーム上に置いたチェックボックス、トグルボタン、オプションボタンには「トリプルステート」というプロパティがあり、これを「はい」にすることで、Nullを含めた3種の値を保持できるようになります。
 ここではチェックボックスを例として試してみます。トリプルステートの値はデフォルトでは「いいえ」ですが、これを「はい」にしてみます。


f:id:accs2014:20170621001605p:plain:right:w300

 フォームビューです。「トリプルステート」プロパティが「いいえ」の場合、チェックボックスはチェック入り(値としてはYesないし-1)、空白(値としてはNoないし0)の2つの状態しかとることができませんが、「はい」にすると、塗りつぶした状態にすることができます(青く見えるのはカーソルが乗っているからで、通常は黒の塗りつぶしになります)。これはチェックボックスの値がNullであることを表しています。


f:id:accs2014:20170621001601p:plain:right:w400

 わかりやすいようにチェックボックスを3つ(チェック1,チェック2,チェック3)置き、それぞれの値をテキストボックスに表示させてみます。


f:id:accs2014:20170621001557p:plain:right:w300

 確かに塗りつぶし状態の値がNullであることがわかります。
 使い道としては、データの検索条件を指定するための非連結コントロールとして配置し、「チェックボックスの値がYesでもNoでも抽出する」ことを表すために用いることが考えられます。

 なお、テーブルでフィールドのデータ型をYes/No型にしたときのチェックボックスにはこのプロパティはありません。また、Yes/No型のフィールドの連結コントロールとしてフォームにチェックボックスを配置し「トリプルステート」プロパティを「はい」にすると、操作不能になります;-o-)Yes/No型のフィールドの値はNullにできないからです。
 もし、「チェックボックスを連結コントロールとして配置したうえで3つの値を切り替える」のであれば、フィールドのデータ型を数値型やテキスト型にしておいて、フォーム上でチェックボックスとして配置する必要があります。テーブルでは数値型やテキスト型のフィールドにチェックボックスを用いて入力することはできませんので、そのように操作できるのはフォーム上だけ、ということになります。

 さらにおまけですが、Nullのときの表示を塗りつぶしでなくメッシュ状にしたい場合は「立体表示」オプションを「浮き出し」などに変更してください。