プロが教える店舗&オフィスのセキュリティ対策術

Access2003 WinXP です。
9月~8月までのフィールドが用意されたテーブルがありまして、
1行づつ顧客名が入っており
各月に金額が入っていたり入っていなかったりしています。
クエリで、9月~8月までと、総合計を表示するようにしたのですが
総合計が、合計金額ではなく、文字列を繋げただけになっていました。

顧客名l9月l10月l11月~・・・l8月l総合計
Aさんl150,000l150,000l150,000~・・・l150,000l総合計は #エラー
Bさんl200l200l~・・・l200l総合計は 200200200
Cさんl1l l~・・・l3l総合計は 13
Dさんl456l456l~・・・l-456l総合計は #エラー

クエリの総合計のフィールドには

総合計: CCur(Nz([9月])+Nz([10月])+Nz([11月])+Nz([12月])+Nz([1月])+Nz([2月])+Nz([3月])+Nz([4月])+Nz([5月])+Nz([6月])+Nz([7月])+Nz([8月]))

と記載しました。。。
9月~8月までの合計金額を出すにはどのようにフィールドに書けば良いのか、分かる方いらっしゃいましたらご教授願います。

A 回答 (3件)

横レスになりますが・・・(汗)



> total: CCur(iif(IsNull([9月]),0,[9月]))+・・・(以下略)

この式の各要素は、Nz関数で対応可能ですので、こちらをお勧めします。

 IIF(IsNull([9月], 0, [9月])) → Nz([9月], 0)
 (CCur関数と組み合わせると、「CCur(Nz([9月], 0))」になります)

また、提示された式をCopy&Pasteして使用しようとしたところ、IIF関数の第3引数
の幾つか(10,12,2,4,6月)で、数字と「月」の間にスペースが入っていることが
わかりました。
もしもクエリから直接貼り付けたものだとすると、これがエラーの原因になって
いる可能性もありますので、確認してみてください。
(こちらでは、パラメータの要求ダイアログがでたので、クエリの実行を中止)

※可能であれば、「9月」等のフィールドは文字列型ではなく通貨型に
 することをお勧めします。
  (書式が必要な場合は、テーブルやクエリの「書式」プロパティで対応:
  テーブルならデザインビューの左下、クエリならデザインビューでフィールドを
  ダブルクリックすると表示されるプロパティシートで、それぞれ設定できます)
  (クエリの場合、「*」ではなく各フィールドを個別に指定する必要あり)
「Access:CCurの結果が単に文字列」の回答画像3
    • good
    • 0
この回答へのお礼

回答ありがとうございます!
Nz関数はそのように書くのですね。何故だめなのか色々いじってました・・・記載して頂いた「CCur(Nz([9月], 0))」で出せました!

その後、各月も空欄は良いのですが値の表示は通貨にしたくいじってました。
プロパティは、SQL文をコードで作成してそれをクエリに差し替えているので無効でした;
結局 
Format(W_Mikomi.[9月],'#,##0') AS 9月額 , Format(W_Mikomi.[10月],'#,##0') AS 10月額 …
と記載する事で、やりたい事が実現出来ました。ありがとうございました!

お礼日時:2009/12/04 11:16

+は連結演算子としても使われるからだと思う。


フィールドのデータ入力がおかしいのでは。
普通に通貨型に設定し、数字をカンマなしで入力し(自動的に3桁ごとカンマ、先頭に¥が着くが)、合計すれば良いのでは。
空白対策としてNZを各フィールドにつけて、空白は0にして足さないといけないとは思うが。
    • good
    • 0
この回答へのお礼

回答ありがとうございます!
+は合計だけではないのですね。
連結は&だけだと思っていました。
各フィールドに、NULLだったら0を表示するようにして合計したら出来ました!
でも出来ればNULLはそのままで、合計の方でnullは0として合計したかったのですが、難しかったです;それは不可能なのでしょうか。

お礼日時:2009/12/03 10:30

+演算子で結合した後にCCur関数で数値に変換しようとしても、もう手遅れ。



先にCCur関数で数値化してから、それを+演算子で演算しよう。

総合計: CCur(Nz([9月]))+CCur(Nz([10月]))+CCur(Nz([11月]))+CCur(Nz([12月]))+CCur(Nz([1月]))+CCur(Nz([2月]))+CCur(Nz([3月]))+CCur(Nz([4月]))+CCur(Nz([5月]))+CCur(Nz([6月]))+CCur(Nz([7月]))+CCur(Nz([8月]))
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
単に連結したのをCCURしていたという事ですね。
書いてくださった式を当てはめたら、空欄があるとエラーとなってしまいました。
各フィールドにNullだったら0を表示するようにしたら大丈夫でしたが、出来れば各フィールドはNullなら空欄のままで、
総合計で何とかしたいです。
Nz関数でいけると思ったのですがエラーでした。
試しに
total: CCur(iif(IsNull([9月]),0,[9月]))+CCur(iif(IsNull([10月]),0,[10月]))+CCur(iif(IsNull([11月]),0,[11月]))+CCur(iif(IsNull([12月]),0,[12月]))+CCur(iif(IsNull([1月]),0,[1月]))+CCur(iif(IsNull([2月]),0,[2月]))+CCur(iif(IsNull([3月]),0,[3月]))+CCur(iif(IsNull([4月]),0,[4月]))+CCur(iif(IsNull([5月]),0,[5月]))+CCur(iif(IsNull([6月]),0,[6月]))+CCur(iif(IsNull([7月]),0,[7月]))+CCur(iif(IsNull([8月]),0,[8月]))
としましたが、これもだめ。。。どこか間違っているのでしょうか;

お礼日時:2009/12/03 10:32

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