質問

Accessで請求書を作りました。
まず、フォームでサブフォームを組み込み、内訳を入力し、合計金額・消費税・税込合計金額のテキストボックスに自動的に数字が入るように作ってみました。請求書ごとに内税の物と外税の物があるので、外税と内税のコマンドボタンを作成し、どちらかをクリックすると、消費税のテキストボックスに消費税額または"税込価格"と表示され、合計金額のテキストボックスに消費税込の金額または合計金額をそのまま表示するという設定をしました。
こんな感じで↓
Private Sub コマンド26_Click()

Me!消費税 = Me!合計金額 * 0.05
Me!税込合計金額 = Me!合計金額 + Me!消費税

End Sub

Private Sub コマンド29_Click()

Me!消費税 = "税込価格"
Me!税込合計金額 = Me!合計金額

End Sub
フォームではうまく表示されるのですが、レポートになると、「#Name?」と表示されてしまいます。
レポートでは消費税のテキストボックス=Forms!F請求書!消費税
税込合計金額のテキストボックス=Forms!F請求書!税込合計金額
と入力してあります。
フォームを開くと消費税と税込合計金額のテキストボックスには常に何も表示されてなくて、外税・内税のボタンを押さないと金額が表示されないのでそのせいでしょうか?
また、このやり方ですと、どちらかのボタンを押すたびに全部のレコードが内税のみ、外税のみになってしまい、請求書発行後に金額が変わってしまいます。
請求書番号ごとに内税・外税の金額を残したいのですが、そんなことは可能でしょうか?
独学で本を見ながら作っております。
VBAとかほんとによくわからないので初学者でも簡単にできる方法がありましたらぜひお願いします。

通報する

回答 (3件)

元になるテーブルに課税区分を用意して
フォーム上では
Private Sub コマンド26_Click()
Me!課税区分 = "外税"
Me!消費税 = Format(Int(Me!合計金額 * 0.05) ,"#,##0")
Me!税込合計金額 = Me!合計金額 + Clong(Me!消費税)
End Sub

Private Sub コマンド29_Click()
Me!課税区分 = "内税"
Me!消費税 = "税込価格"
Me!税込合計金額 = Me!合計金額
End Sub

レポート上では詳細イベントのフォーマット時で課税区分に応じて
Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)
If Me!課税区分="外税" Then
Me!消費税 = Int(Me!合計金額 * 0.05)
Me!税込合計金額 = Me!合計金額 + Me!消費税
Else
Me!消費税 = "税込価格"
Me!税込合計金額 = Me!合計金額
End If
End Sub

この回答へのお礼

お忙しい中ご丁寧にありがとうございました。お礼が遅くなりまして申し訳ございません。この間ずっと格闘していました。まだ完全には出来上がっておりませんが多分うまくいきそうです。完成してからお礼をしようと思いましたが、随分と時間も経ってしまったので途中経過ですがお知らせ致します。やりたかったことが明確になっていたのでほんとにありがたいです。ありがとうございました。

>レポートになると、「#Name?」と表示されてしまいます。
フォーム上のコントロールはフォームが開いていないと参照できません

>全部のレコードが内税のみ、外税のみになってしまい
非連結のコントロールは同じ値しか取り得ません

>初学者でも簡単にできる方法がありましたらぜひお願いします。
計算で求められるものはテーブルには格納しないというのが基本ですから
消費税や合計金額をテーブルに格納しない今のやり方は正解です
ただ入力時にそれらの値をみたいとしても
非連結のコントロールに値を代入するのではなく
フォームのソースをそれらを求める式フィールドを持った
クエリにしてやればすむことです

レポートのソースもクエリにします

クエリを使えば現在のVBAも必要ありません

この回答へのお礼

お忙しい中ご丁寧にありがとうございました。お礼が遅くなりまして申し訳ございません。基本的なことがまったく解ってなくて大変勉強になりました。時間がなくて間に合わないので今回はご回答いただいた中のVBAを貼り付けてしまいました。でも結局自分では仕組みもわかってないのでクエリやフォームの勉強もこれからやっていくつもりです。本当に明確なご指摘ありがとうございました。次はクエリを使ってもっと簡単に作ってみます。本当にありがとうございました。

テーブルに消費税の区分(内税、外税、非課税?)を追加して、そのフィールドを利用して処理をするように、構築してください。

この回答へのお礼

お忙しい中どうもありがとうございました。お礼が遅くなりもうしわけございません。テーブルに区分を置くという重要なことをご指摘いただいて随分とはかどりました。(まだ完成はしてないんですけど。)本当にありがとうございました。

このQ&Aは役に立ちましたか?0 件

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

新しく質問する

注目の記事

フリーアナウンサー長谷川豊氏の新コーナー「このニュースどう思います?」がスタート!

元フジテレビのフリーアナウンサー長谷川豊氏から気になるニュースについておしトピの皆さんに質問します! 皆さんの意見をもとに長谷川豊氏がコラムを執筆します! アプリリリース記念として最大1万分のアマゾンギフト券プレゼントキャンペーンも実施中!


新しく質問する

このカテゴリの人気Q&Aランキング

毎日見よう!教えて!gooトゥディ