プロが教えるわが家の防犯対策術!

【前提】
・Access2010です。
・「売上と料金」という名前の選択クエリの結果を
  Excel形式で出力(エクスポート)するマクロを作りました。
  レコードが2000ぐらいある明細が出力されます。
・選択クエリ「売上と料金」には
 「料金」という名前のフィールドがあります。(0以上の整数のみのフィールド)
  ほとんどが0ですが、数値が入るレコードもごくたまーに存在します。
・選択クエリ「売上と料金」は
  2つのテーブル「担当者」と「売上ほか」を結合して作成しています。
 「料金」フィールドは「売上ほか」に存在するフィールドです。

【実現したい動作】
この選択クエリ「売上と料金」において、
「料金」フィールドの合計が0よりも大きい場合、
つまり「料金」フィールドに何らかの数値が存在する場合に、
「料金が発生しているので注意」というメッセージを出したいです。
メッセージを出すタイミングはいつでもよいです。

【質問】
マクロのアクションで「IF~Then~」使い、
 ①IFに合計が0より大きいことを判断する式を設定し、
 ②Thenにメッセージボックスを設定する
という作業が必要なのかな?と想像しています。
②はできますが、①が分かりません。
もしくは見当違いだよ!違う方法だよ!ということであれば
それをご教示いただけませんでしょうか。
よろしくお願いいたします。


※当方、Access初心者です。
 どの情報が必要かよく分からないので多めに詳しく書きました。
 不要な情報ばかりでしたらすみません・・・
 VBAやモジュール、SQLは使ったことがありませんので使いこなせません。
 (ほぼ完コピできる構文であれば何とか使えるかも?というレベル)
 できればマクロで完結できる方法希望です。
 マクロだけでは無理でしたらその旨おっしゃって下さい。

※選択クエリ「売上と料金」のほかに
 集計だけするクエリを新たに作って判定させる方が簡単でしょうか?
 (でもその場合も判定させる方法が分かりませんが・・・)

質問者からの補足コメント

  • >nicotinismさん

    「判定とメッセージ」という動作は
    「料金」フィールドのレコード一つ一つに対してさせるのではなく、
    「料金」フィールドの“合計”に対してさせたいのです。

    つまり「料金」が1円以上のレコードが
    一つでもあれば
    メッセージが一度だけ出る、というしくみにしたいです。

    質問が上手くなくてすみません。

      補足日時:2016/04/27 08:33
  • >nicotinismさん

    「判定とメッセージ」という動作は
    「料金」フィールドのレコード一つ一つに対してさせるのではなく、
    「料金」フィールドの“合計”に対してさせたいのです。

    つまり、「料金」フィールドに
    1円以上のレコードが一つでもあれば
    一度だけメッセージが出る、
    そんなしくみを作りたいです。

    質問が上手くなくてすみません。

      補足日時:2016/04/27 08:37

A 回答 (2件)

Dsum("料金","売上と料金")で料金の合計が出ます。


マクロで
if Dsum("料金","売上と料金")>0 then
②メッセージを表示させる
end if

https://msdn.microsoft.com/ja-jp/library/office/ …
    • good
    • 1
この回答へのお礼

解決しました

すごい!
一発でできました!
早々に適切な回答いただき助かりました。
どうもありがとうございました。

お礼日時:2016/04/27 17:57

メッセージボックスで表示させるのは止めといた方が・・・。


2000レコードあって100レコードが対象だった場合に100回クリックなどの操作が必要。
あれ、さっきのは何だっけ?と前のレコードに遡るのも困難。
なので、
Excelに出力後に対象列を条件付き書式で色分け。
が一番無難な気がします。
    • good
    • 0
この回答へのお礼

おしえてgoo始めたばかりで手順がよくわからず
「お礼する」を忘れていました。
いまさらですがお礼申し上げます。
すぐに回答いただきまして
どうもありがとうございました。

お礼日時:2016/04/28 17:40

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

このQ&Aを見た人はこんなQ&Aも見ています