|
>集計帳票で現在の記述は
>=IIf([100]=0,"",[100])
>となって記述されています。
>
>コードNo100の値を表示 値がゼロの場合は空白でという記述だと思っているのですが、
いきなり脱線しますが、
「空白」という表現は使うべきではありません。
テキストボックスが空白になる場合には、
テキストボックスの値が長さ0の文字列(空文字などとも呼ばれます)である場合と
テキストボックスの値がNullである場合との
2通りあります。
そのため、「空白」という表現ではどちらのことなのか区別できないからです。
ちなみに、長さ0の文字列とNullとでは、コンピュータでの処理上では、雲泥の差があります。
で、本題ですが、
上記の式は、おそらくテキストボックスのコントロールソースに記述されているのだと思います。
「100」という名前のコントロールがテキストボックスなのか、コンボボックスなのか、はたまた
他の種類のコントロールなのか不明ですが、
説明の便宜上、「100」という名前のコントロールはテキストボックスだとします。
そこで、上記の式の意味ですが、
「100」という名前のテキストボックスの値が0であれば、長さ0の文字列を表示し、
そうでなければ、「100」という名前のテキストボックスの値を表示する
というものです。
また脱線しますが、
上記の式にはものすごく違和感を覚えます。
上記の式が設定されたコントロールが表示する値が、テキスト型だったり(長さ0の文字列の場合)、数値型だったりするからです。
エクセルではデータ型を意識することはないのに対して、アクセスはデータ型にうるさいわけですが(というより、エクセルがずさん過ぎる)、
データ型を混在させると、このコントロールの値を使って何かをしようという場合に、
困ったことになる場合が出てきます。
さらに脱線ですが、
上記の式が設定されたコントロールですが、値が0である場合に0を表示させないようにしたい
ということですよね。
そのためにわざわざ1つのコントロールを設けるのは、無駄ではないかと思います。
また、もし、値が0である場合に、0を表示させたくないというならば、
上記の式で言えば、名前が「100」であるテキストボックスの「書式」プロパティを、
しかるべく設定すれば、実現することができます。
脱線はまだ続きますが、
コントロールの名前を、例えば「100」のように数字で始まるものにするのはNGです。
コントロールの名前の1文字目は文字にしなければなりません。
一般機能だけでアクセスを使うのであれば、つまり、VBAを決して使わないというのであれば、
数字で始まる名前でも何とかなると思いますが、
後々VBAを使うかもしれないというのであれば、数字始まりは避けるべきです。
本題その2です。
>=IIf([800]+[801]=0,"",[800]+[801])
この式がうまくうまく動いてもらうためには、
フォームに、「800」という名前のコントロールと「801」という名前のコントロールが
存在している必要がありますが、そういうコントロールは存在しているのでしょうか。
>正解な記述を教えていただければ助かります。
フォーム構成を正確に提示してもらえなければ、正確な記述など示しようがありません。
なお、通常、フォーム構成と言えば、
フォームの名前、
フォームのレコードソース
フォーム上の主要なコントロールの名前
当該コントロールのコントロールソース
あたりを提示してもらうことになります。
|
|