アプリ版:「スタンプのみでお礼する」機能のリリースについて

=IIf(Count(*)=1,"",1)

上記の式の意味について教えてください。
チェックボックスにチェックがついています。

宜しくお願いします。

A 回答 (3件)

式の意味についてはNo.1の方の回答の通りです。


(Count関数で確認したレコード数を元に、IIF関数で場合分け)

ただ、チェックボックスで使用しているのだとすると、ちょっと注意が
必要な式になっています(汗)
ですので、その点について、蛇足ながら参考までに説明をしておきます。


通常、チェックボックスはオンかオフかの2通りの表示をするのに
使いますが、実際には「グレー表示」も可能になっています。

で、今回の式で「レコード数が1の時」に指定されている「""」
(空文字)と、「Null」(→どちらもテキストボックスでは「空白」と
して見えることになるデータ)が、この「グレー表示」になる場合に
当たります。

ところが、この「グレー表示」ですが、Accessの設定によっては
「オフ」の表示と区別ができなくなってしまいます。
(→添付画像を参照:
 Accessのメニューから「ツール(T)→オプション(O)」を選択して
 開く『オプション』ダイアログの『フォーム/レポート』タブにある、
 「フォーム上のコントロールにWindowsのテーマを使用する(T)」
 の設定を切り替えた場合の表示の違いです)
※なお、この設定はフォームにのみ有効で、レポートの場合は
 設定に依らず「オン/オフ/グレー」は常に区別して表示される
 ようです(XP Home-Access2003で確認)。

つまり、複数のPCでMDBファイルを共有していた場合、PCに
よってはグレーに見えたりオフに見えたりする、ということが発生
してしまう、ということです。

ですので、もしも「オン/オフ」表示のみを意図されている場合は、
ご質問の式は

=IIF(Count(*)=1, 0, 1)

と、「""」ではなく「0」に変更されることをお勧めしておきます。

または、より「オンかオフかが(プログラムの保守をする立場として
)わかりやすい」という意味では、

=IIF(Count(*)=1, False, True)

でもいいかもしれません。


【さらに蛇足(汗)】
今回の内容であれば、IIF関数を使用せずに

=(Count(*)<>1)

としても、同じ結果が得られますので、併せて参考まで。
「アクセス2003 COUNT について」の回答画像3
    • good
    • 0
この回答へのお礼

とてもご丁寧に説明いただき、ありがとうございます。
プリントアウトして勉強します。

お礼日時:2011/04/24 17:01

IIF関数は意味に疑問は無いでしょう。


Count(*)の意味をテストするために
テーブルのレコード数をフォームのテキストボックスに表示する操作をやってみました。(結構微妙な操作なので注意)
ーーー
「フォーム」のオブジェクト
新規作成
デザインビュー
「基になるテーブル・・」は指定しない(空白)。テーブルのフィールドと連結させない。
OK
フォームにテキストを1つ貼り付け
ーーー
フオームのデザインモード
タイトル部で右クリック
プロパティ。もし「詳細」などになっていたら▼をクリクして「フォーム」をえらぶ。
「データ」タブ
「レコードソース」の行で▼をクリックーー「・・・」を指定しないこと。連結フィールドになる方に行ってしまう。
テーブル名を指定(私の場合 社員4) 
--
テキストボックスのデザインモードで
プロパティ
「データ」タブ
「レコードソース」の行で 
「・・・」をクリック
関数
組み込み関数
Count
Count(*)に修正
OK
=COUNT(*)になる。
ーー
表示
フォームビュー
ーー
結果
私の場合のテーブルの「社員4」の5レコードの5がテキストボックスに出ました。
ーー
だから質問の場合、レコード件数が1件なら空白、それ以外(多分2以上なら)1を返すということだと思います。
    • good
    • 0

「上記の式の意味について教えてください。



 フォーム関連づけられているテーブルもしくはクエリのデータの数を数えるのがCOUNT文。↓
http://office.microsoft.com/ja-jp/access-help/HA …

 数えた結果、データが1件なら空白に、そうでなければ1をセットする。チェックボックスなら、1をセットすることでチェックが付くんじゃないかな。
    • good
    • 0
この回答へのお礼

どうもありがとうございます!

お礼日時:2011/04/24 15:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!