質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.75%

  • VBA

    1644questions

    VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

  • Access

    391questions

    Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

【ACCESS】明細の金額でチェックボックスの有無により税処理を分岐したい。

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 184

tera_taro

score 34

 前提・実現したいこと

経費の計算で、消費税を抜いた金額で入力していく画面があります。
イメージ説明
データシートの部分はサブフォーム
小計などのラベルがある部分はメインフォーム

サブフォームにて、
税抜金額(txt_sum1)、消費税(txt_sum2)、総額(txt_sum3)、非課税金額(txt_sum4)
の項目にそれぞれ条件に応じて値を入れたい。

メインフォームにて、txt_sum〇の箇所を変え、小計、消費税、総計、非課税
それぞれ以下のコントロールソースにより出力している。

=IIf(Not IsError([sub_trntbl_meisai]![txt_sum1]),[sub_trntbl_meisai]![txt_sum1],Null)


コントロールソースにコードを記載するやり方、コードビルダーで処理を記載するやり方、どちらでも良いので良い方法をご教授願います。

 該当のテーブル

イメージ説明

イメージ説明

 該当のサブフォーム

イメージ説明
税抜金額 
名前 txt_sum1 コントロールソース =Sum([KINGAKU])
消費税額
名前 txt_sum2 コントロールソース =Sum([KINGAKU]*0.08)
総額
名前 txt_sum3 コントロールソース 非連結
非課税金額
名前 txt_sum4 コントロールソース =Sum([KINGAKU])

非課税選択チェックボックスのコントロールソース
CHK_ZEI
金額のコントロールソース=CLng(Nz([txt_TANKA],0))*CLng(Nz([txt_SURYO],0))

イメージ説明

 試したこと

'集計条件分岐処理

    '非課税選択時処理
    If txt_CHK_ZEI = False Then  'チェックボックスが☑でない時
        '税抜金額
        txt_sum1 = Sum([KINGAKU])
        '消費税額
        txt_sum2 = Sum([KINGAKU] * 0.08)
    Else
        '非課税額
        txt_sum4 = Sum([KINGAKU])
    End If

    '総額処理
    txt_sum3 = Sum(txt_sum1 + txt_sum2 + txt_sum4)


上記の処理はやりたいと思っていることです。
非課税選択チェックボックスにチェックが入っているかどうかで
条件を分岐するというのを構想しています。

サブフォームの税抜金額、消費税額、総額、非課税金額のコントロールソースにどう書けばいいか分からないということと、
上記以外のやり方としてやるのであれば、コードビルダーでどう書けばいいか分からないので悩んでいます。

 補足情報(FW/ツールのバージョンなど)

Window10、ACCESS2016

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+1

こういう場合は、VBAは使わないです。

あと、消費税の計算法として、
四捨五入か切り捨てか、を決めてください。
また、消費税を計算するときに、単品ごとに計算するのか、
税抜き価格を合計してから税率をかけて計算するのかも、決める必要があります。
これは、事業者が決めることができます。
消費税の端数処理は税抜きか、四捨五入か、切捨てか、どれが正しい? | 税理士法人田中経営会計事務所

とりあえず、切り捨て、単品毎、として回答します。

クエリの演算フィールドか、フォームのコントロールソースに式を設定します。

クエリに式を設定すれば、レポートを作成するときなどにも共有できるので、私はそちらを使う方が多いです。

クエリに下記のような演算フィールドを作成します。

KINGAKU: Nz([TANKA],0)*Nz([SURYO],0)
ZEIGAKU: IIf([CHK_ZEI],0,Fix(Nz([TANKA],0)*CCur(0.08))*[SURYO])
HIKAZEI: IIf([CHK_ZEI],[KINGAKU],0)

※ *0.08 を *CCur(0.08) に修正しました。0.08だと浮動小数点数になるので演算誤差が出ますので、CCur で通貨型に変換します。

サブフォームのフォームヘッダーのテキストボックスの設定

税抜金額計
名前 txt_sum1
コントロールソース =Sum([KINGAKU])

消費税額計
名前 txt_sum2
コントロールソース =Sum([ZEIGAKU])

総額
名前 txt_sum3
コントロールソース =[txt_sum1]+[txt_sum2]

非課税金額計(非課税商品の金額計)
名前 txt_sum4
コントロールソース =Sum([HIKAZEI])

メインフォームのテキストボックスのコントロールソース設定

=[sub_trntbl_meisai]![txt_sum1]

=[sub_trntbl_meisai]![txt_sum2]

=[sub_trntbl_meisai]![txt_sum3]

=[sub_trntbl_meisai]![txt_sum4]

フォームの場合は、IsErrorのチェックはいならかったような気がします。レポートの場合はいるかも。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/24 16:14

    うまくいきました。ありがとうございます!

    >四捨五入か切り捨てか、を決めてください。
    四捨五入か切り捨てかはまだ決まっていませんでした。
    >また、消費税を計算するときに、単品ごとに計算するのか、
    単品ごとに計算するようにしています。

    >総額
    >名前 txt_sum3
    >コントロールソース =[txt_sum1]+[txt_sum2]
    の所は非課税金額も含めるとなれば
    コントロールソース =[txt_sum1]+[txt_sum2]+[txt_sum4]
    で変更した所問題なさそうでした。

    キャンセル

  • 2018/05/24 16:24

    すでに解決したのですがよろしければお願いします。
    四捨五入の場合は
    >ZEIGAKU: IIf([CHK_ZEI],0,Fix(Nz([TANKA],0)*0.08)*[SURYO])の所を
    ZEIGAKU: IIf([CHK_ZEI],0,Round(Nz([TANKA],0)*0.08)*[SURYO])
    という形になるのでしょうか。

    キャンセル

  • 2018/05/24 16:24 編集

    > コントロールソース =[txt_sum1]+[txt_sum2]+[txt_sum4]
    > で変更した所問題なさそうでした。

    いえ、
    txt_sum1 は非課税、課税、両方の税抜金額計です。
    txt_sum2 は課税対象の消費税額です。(非課税は、消費税額=0)
    ですので、総額は、=[txt_sum1]+[txt_sum2] です。
    txt_sum1 を課税対象のみにするなら、下記の式になります。
    =Sum(IIf([CHK_ZEI],0,[KINGAKU]))

    キャンセル

  • 2018/05/24 16:33

    なるほど!
    ご指摘助かります。

    キャンセル

  • 2018/05/24 16:36

    > 四捨五入の場合は
    Round は四捨五入ではなく、銀行型丸めになります。(結果が偶数になるように丸められる。)
    四捨五入にするには、0.5を足して切り捨てすることになります。
    IIf([CHK_ZEI],0,Fix(Nz([TANKA],0)*CCur(0.08)+CCur(0.5))*[SURYO])

    キャンセル

  • 2018/05/25 14:05

    >ZEIGAKU:
    IIf([CHK_ZEI],0,Fix(Nz([TANKA],0)*CCur(0.08))*[SURYO])
    のクエリなのですが単価×0.08×数量になっていると思うので、
    (単価×数量)×0.08という記述にしないと計算がおかしくなるかとふと気づきました。
    ZEIGAKU: IIf([CHK_ZEI],0,Fix(Nz([TANKA],0)*Nz([SURYO],0)*CCur(0.08)))
    というような形にするのが適正かと思うのですがいかがでしょうか。

    キャンセル

  • 2018/05/25 14:24

    どの段階で消費税の計算をするかは、事業所の判断に任されています。
    一般的な小売店ですと、単品ごとに税込み価格表示する場合が多いと思います。
    例えば単価280円の商品の税込み価格は、
    280*1.08=302.4 切り捨てて、302円と表示します。
    3個買った場合、302*3=906 です。
    個数を掛けてから計算すると、
    (280*3)*1.08=907.2 切り捨てて 907円となり、誤差がでます。
    税込み価格を表示しておいて、907円請求したら客はおいおいとなります。
    店によっては、税抜き価格を表示しておいて、すべて合計してから、税率を掛ける計算法をとるところもあります。
    どの方法をとっても自由ですので、どれでも適正です。
    小売店でない場合は、取引先との相談で決めることになります。

    キャンセル

  • 2018/05/25 14:30

    四捨五入や切り捨ての方法以外にも、
    どの段階で税の計算をするかもはっきり決められてはいないのですね。
    勉強になりました。

    キャンセル

+1

サブフォームの税抜金額、消費税額、総額、非課税金額

というのは明細単位での項目ということでよろしいですか?

税抜金額 
名前 txt_sum1 コントロールソース =[KINGAKU]
消費税額
名前 txt_sum2 コントロールソース =[KINGAKU]*0.08
総額
名前 txt_sum3 コントロールソース =[KINGAKU]*1.08
非課税金額
名前 txt_sum4 コントロールソース =iif(CHK_ZEI=True,[KINGAKU], 0)

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/05/24 15:40

    サブフォームの税抜金額、消費税額、総額、非課税金額
    はメインフォームで出力する時用にしか使わない項目です。
    メインフォームで出力された値がテーブルに保存されることになります。
    という回答で回答になっているでしょうか?

    >総額
    >名前 txt_sum3 コントロールソース =[KINGAKU]*1.08
    は非課税金額も入れた総額とするならば
    総額
    名前 txt_sum3 コントロールソース =([KINGAKU]*1.08) + iif(CHK_ZEI=True,[KINGAKU], 0)
    のような形でしょうか。

    キャンセル

  • 2018/05/24 15:46

    メインフォームに既に明細の集計項目は有るのではないですか?
    それともメインフォームでの明細集計が質問内容ですか?

    キャンセル

  • 2018/05/24 16:02

    >メインフォームに既に明細の集計項目は有るのではないですか?
    >それともメインフォームでの明細集計が質問内容ですか?
    なんと答えていいのか分からないのですが、
    メインフォームの明細集計の項目はあります。
    サブフォームでの明細集計の方法が分かれば、
    メインフォームの明細集計の項目のコントロールソースにて、
    txt_sum〇の値を取得してきてメインフォームの明細集計に出力でき、解決できると考えているので、サブフォームでの処理が質問内容です。

    キャンセル

  • 2018/05/24 16:13

    理解しました。
    フォームのフッターやヘッダーではsum()が使えるのでそれを利用します。
    既にhatenaさんの回答にありますのでそちらで。
    尚、sum()については使用できる数に上限があったはずなので、集計した項目同士の加算で済むような場合はそちらを利用するようにされたほうが良いです。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.75%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 受付中

    C++のCAD上で作成した図形の輪郭切り取り

    C++ ```###前提・実現したいこと CADで図のような立体画像を作成し、この画像の赤い部分のような、輪郭画像を抽出するプログラムを作成しました。このプログラムを使用し現在

  • 解決済

    Choregrapheで部分的に動作確認するには?

    またもPepperです。わからないことだらけです。 Choregrapheでプログラムを組んでいくとどんどん冗長になっていくのですが、枝葉のほうにプログラムを追加した際に、そ

  • 解決済

    SQLパラメーター式テーブルの値をand検索する

    実現したいこと fruit_id : 1 -> apple fruit_id : 2 -> mikan fruit_id : 3 -> banana テーブル名 : f

  • 解決済

    C# Windowsフォームアプリケーションでラジオボタン機能を画像で行いたい

    C# Windowsフォームアプリケーションでラジオボタン機能を、 用意した画像で処理したいのですが、ラジオボタンを画像に置き換えることができません。 やり方わかる方いましたら

  • 解決済

    Monacaでtimepickerの実装

    前提・実現したいこと MonacaでiOS/Andriod両方に対応しているアプリケーションを開発していて、アラーム機能を実装しようと思い、Monacaでtimepickerのよ

  • 受付中

    ER図について

    つぶやきアプリを作っているのですが、 ER図を作るとする例えばどんなものがありますか?? サンプル程度でいいので教えていただきたいです

  • 受付中

    JAVA フォーム入力した日本語の文字化け

    前提・実現したいこと ある教本に記載されているサーブレットのサンプルコード(javaとhtml)を入力して、ブラウザで実行しましたが、フォームから入力して、出力した文字が文字化け

  • 解決済

    checkBoxの境界線

    checkBoxでAppearanceプロパティをButtunにしたときのフォーカス場所??の色を変更したいのですが、やり方がわかりません。 写真でいう水色になっているところです。

同じタグがついた質問を見る

  • VBA

    1644questions

    VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

  • Access

    391questions

    Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。