- ベストアンサー
アクセスフォームからのカウント
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
Q、空欄があっても答えがでる方法はありますか? A、先の添付図の[数字2]には空欄があると思いますが・・・ ということは、質問者の場合は《実際は空欄ではなくて""を表示していることが考えられます。 【イミディエイト】 ? Null > 0 Null ? "">0 エラー イミディエイトウインドウで上記のような論理式を入力すると《"">0》はエラーになります。完全な空欄=Null であればエラーは発生しません。そういうことで、《"">0》という論理式のエラー対策が必要だったということです。 さて、そうなると値が《""》でも《null》でもOKな論旨式を書かなければなりません。ですから、 1、そもそもテーブルの列にnull値を発生させない。 2、そもそも《""》ではなくて《0》に置換する。 3、その際に《0》を表示したくなければ書式を工夫する。 4、1、2,3をしなければNz()で対応する。 あるいは =Abs(Sum("Len(数字2 & "")>0")) という手段もあります。
その他の回答 (5)
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
【蛇足の補足】「それぞれ」について 論理式にNz()を書くのかどうか? 1、書いても書かなくても結果は同じなので書かない。 2、でも、そういう判断が面倒なので取り合えず書いておく。 1,2の選択は、それぞれの判断。ということです。
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
【蛇足】=Abs(Sum("Nz(数字2)>0")) とNull対策が必要かどうかはそれぞれです。
お礼
何度もご連絡を本当にありがとうございます。感謝致します。 こちらでもためさせていただいているのですが・・。やはりエラーになります。
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
【補足】Sum()も利用できます。 =Abs(Sum("数字2>0")) 数字2>0 の値は、0 or -1。ABS()で絶対値を表示しても目的は達成できます。
お礼
再度の式のご教示ありがとうございます。 残念ながらこちらで試させていただいてもエラーになります。 ページヘッター、フッター、詳細のどちらでもテキストボックスを作りコントロールソースに教えていただきました式を入力してるのですがすべてエラーとでてきます。
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
【イミディエイト】 ? DBLookup("SELECT Count(*) FROM テーブル1 WHERE 数字1>0",0) 3 ? DBLookup("SELECT Count(*) FROM テーブル1") 4 イミディエイトウインドウでのテスト結果を参照すると、 SELECT Count(*) FROM XXXXX の戻り値は、3の場合もあるし4もあることが判ります。その違いは WHERE節を指定しているかどうかです。 >Count 関数は単にレコード数を計算するのみです。 >レコードにどのような値が格納されているかは関係ありません。 (microsoft) 質問者は、条件節を指定できない Count 関数を利用しているので《値に関係なくレコード数》を取得し表示していますので、結果は当然に4。 >SELECT Count(*) FROM テーブル1 WHERE 数字1>0 このWHERE節ありのSQL文の実行結果を戻す方法は3つ。 1、=DLookup("Count(*)","テーブル1", "数字1>0") 2、=DCount("*","テーブル1","数字2>0") 3、DBLookup("SELECT Count(*) FROM テーブル1 WHERE 数字1>0",0) なお、DBLookup()は、私が自作したものでAccessには用意されていません。ですから、通常は1、2のどちらか。普通は2だと思います。
お礼
f_a_007 様丁寧に教えていただきありがとうございます。 お返事遅れませて申し訳ありません。 1.2両方で試させていただいたのですがエラーになります。
お礼
ありがとうございました! Nzの数式でなんで私のデータだけ空欄があるとエラーが出るのかわからなかったのですが””が入っていたのですね。 親切に教えていただきありがとうございました! 希望通りのものができました!ありがとうございました。