• ベストアンサー

アクセス2003 COUNT について

=IIf(Count(*)=1,"",1) 上記の式の意味について教えてください。 チェックボックスにチェックがついています。 宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.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) としても、同じ結果が得られますので、併せて参考まで。

kabihana
質問者

お礼

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

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

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

  • PXU10652
  • ベストアンサー率38% (777/1993)
回答No.1

「上記の式の意味について教えてください。」  フォーム関連づけられているテーブルもしくはクエリのデータの数を数えるのがCOUNT文。↓ http://office.microsoft.com/ja-jp/access-help/HA001231438.aspx  数えた結果、データが1件なら空白に、そうでなければ1をセットする。チェックボックスなら、1をセットすることでチェックが付くんじゃないかな。

kabihana
質問者

お礼

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

関連するQ&A