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とかほんとによくわからないので初学者でも簡単にできる方法がありましたらぜひお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (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
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/10/20 10:44

>レポートになると、「#Name?」と表示されてしまいます。


フォーム上のコントロールはフォームが開いていないと参照できません

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

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

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

クエリを使えば現在のVBAも必要ありません
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/10/20 10:52

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

    • good
    • 0
この回答へのお礼

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

お礼日時:2006/10/20 10:56

このQ&Aに関連する人気のQ&A

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

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QAccessの桁区切りについて教えてください。

アクセスのレポートの金額に、桁区切りのカンマを付けたいと思っています。
プロパティの書式を通貨にすると¥マークがついてしまいます。
合計は付いてもいいのですが、内訳には¥マークを付かないように桁区切りだけにしたいのです。

そのため、書式に『###,##0』としました。
できましたが、小数点以下が表示されません。

小数点を表示したいので『###,##0.###』としたら、『59,180.000』となってしまいます。
小数点の指定を自動から3桁表示に変えましたが、うまくいきません。

教えていただきたい内容としては、
・金額の表示に桁区切りのカンマを付けたい。
・でも¥マークは付けたくない。
・小数点以下該当があるもののみ3桁まで表示させたいが(5,500.365)、
 小数点以下がないものは小数点以下は表示させたくない(5,400)。

ぜひともアクセスを使いこなしている方、お教えください。

Aベストアンサー

この内容からですと、[金額]フィールドを「レコードの内容により、書式を変えたい」と
いうことですので、テキストで処理する方法よりないかと思います。(Access2000)

VBAによる「ユーザー定義関数」を使う方法ですが、それで良かったら手順を
詳しく書きますので、テストしてみてください。

・テーブルのデザインで[金額]フィールドを「数値型」の「単精度浮動小数点型」か
 「倍精度浮動小数点型」にします。

・「モジュール」の新規作成で開いたコードウィンドウに下記コードをコピーして
 貼り付けます。

・フォームのレコードソースにするためのクエリを作成します。
 必要なフィールドをQBEグリッド(画面の下側)にドラッグした後、
 新規フィールドに 例えば、 金額Txt:Valtxt([金額]) と入力します。

・レポートの[金額]のコントロールソースに、この[金額T]を指定します。
 この書式で「配置」を右に設定します。

これで、少数部がない数値は、整数部だけを表示し、位取りの , が付きます。
小数部がある場合は、4位を四捨五入します。(通常と同じ)
その結果、右側に 0 が付いた場合は、表示しません。

ご承知の上とは思いますが、表形式の場合、少数点位置が揃わなくなりますので
見ずらくなってしまいます。

このようなもので如何でしょうか。

Function Valtxt(V As Double) As String
Dim T As String
Dim N As Integer
T = Format(V, "#,##0.000")
For N = Len(T) To InStr(T, ".") Step -1
  If Mid(T, N, 1) = "0" Then
    T = Left(T, N - 1)
  Else
    Exit For
  End If
Next N
If Right(T, 1) = "." Then T = Left(T, Len(T) - 1)
Valtxt = T
End Function

この内容からですと、[金額]フィールドを「レコードの内容により、書式を変えたい」と
いうことですので、テキストで処理する方法よりないかと思います。(Access2000)

VBAによる「ユーザー定義関数」を使う方法ですが、それで良かったら手順を
詳しく書きますので、テストしてみてください。

・テーブルのデザインで[金額]フィールドを「数値型」の「単精度浮動小数点型」か
 「倍精度浮動小数点型」にします。

・「モジュール」の新規作成で開いたコードウィンドウに下記コードをコピーして
 ...続きを読む

Qアクセスのフォーム内で消費税計算方法を分岐させたい

アクセスでフォームを作って、消費税額を表示させるテキストボックスを
作りました。消費税は、場合によって外税だったり内税だったりするので、
オプションボタンを作って処理を分岐させようと思っています。
case文で処理を分岐させたいのですが、オプションボタンを選択したあとに
実行させるプロシージャの書き方がわからないのです!
すみませんが、教えてください!

また、オプションボタンよりもっと簡単にできる方法ってあるんでしょうか?
本を見ながらの初心者なので、どれが適した処理方法なのか、判断できない
のです・・・。

Aベストアンサー

関数を作ってそれに課税対象額と課税区分を渡すって言う感じですね。


オプショングループで1が外税・2が内税とします。
Kingakに課税対象となる金額コントロール、Kubunにオプショングループを指定します。消費税を表示したいコントロールのコントロールソースに下記のファンクション名を指定して下さい。

Function Get_Tax(Kingak As Money,Kubun As Int)
Select Case Kubun
Case 1 '外税
Get_Tax = Kinigak * 0.05
Case 2 '内税
Get_Tax = Kingak - (Kingak / 105 * 100)
End Select

 って感じでしょうか。端数処理は行っていませんので小数点以下も表示されてしまいますが。切り上げ・切り捨て・四捨五入などint()で付け加えてください。

QAccess フォーム上でのテキストボックスとテーブルの連結

フォームヴィザードからフォームを作成すると、
テキストボックスと指定したテーブルを連結させることができるのですが、デザインビューでそれをするときに、テキストボックスのプロパティのコントロールソースにテーブル名を入れれば連結できるのかと思いきや、うまく表示されません。どこを設定すればテキストボックスとテーブルを連結できるのでしょうか?

Aベストアンサー

#2です。
デザインビューの空欄スペース(グレー1色のところ、升目なし)で右クリックをするとプロパティが出てきます。また、フォームウィザードの途中で、そのフォームと連結するテーブルかクエリを選択する画面が出てきます。

Qクエリで合計を出したい。。

こんにちは。
初歩的な質問で申し訳ありませんが、回答お願いします。
アクセスで売上をつけています。
地区ごとのクエリで合計を出したいのですが

社名  地区  売上
A社 ○○地区 1000
B社 ○○地区 2000 
C社 ○○地区 3000
D社 ○○地区 4000
E社 ○○地区 5000

という感じなんですが
どこかのセル(アクセスでもセルと呼ぶのでしょうか^_^;?)に売上の合計(ここでは15000です)が出るようにしたいのですが・・・。

Aベストアンサー

地区ごとの合計を出したいのなら、
クエリを作成し、該当するテーブルを選び
「地区」、「売り上げ」を選択して
右クリックして「集計」をクリックし
「地区」の集計を「グループ化」
「売り上げ」の集計を「合計」にする。

SQLビューで見ると

SELECT 地区名, Sum(売り上げ) AS 合計 FROM テーブル名 GROUP BY 地区名;

といった感じかな。

QAccess フォーム上で計算する方法とそれをテーブルに反映させる方法を教えてください。

こんばんは。色々試したのですが、わかりませんでしたので質問します。
Accessのフォーム上で計算する方法とそれをテーブルに反映させる方法を教えてください。

サブフォーム入りのサブフォームの中の、「売上」と「原価」を入力すると自動的に「原価率」が表示させ、その「原価率」をテーブルに反映させたいのですが、どうしたらよいのでしょうか。

途中まで考えたのは、選択クエリ上で計算させて、それをフォームにしたら表示のみは出来たのですが、テーブルに反映させる方法までたどりつきませんでした。
どうぞ宜しくお願い致します。

Aベストアンサー

> プロパティ-更新後処理のところに
> Me![原価率]= Me![原価]/Me![売上げ] と式を入れました。

更新後処理の横に…となっているところがあるのでそこをクリックして
コードビルダを選択すると(原価の場合)
Private Sub 原価_AfterUpdate()

End Sub
と表示されるので
Private Sub 原価_AfterUpdate()
    Me![原価率]= Me![原価]/Me![売上げ]
End Sub
となるようにしてください。
各コントロールが存在するものとして考えてます。

QAccessでテキスト型→数値型への変換方法

Access2000を使用しており、クエリを作成しています。
テーブルから[回答]というフィールドをひっぱってきています。
フィールド[回答]にて、最初の3文字に対応時間を入れており、
Mid関数にて対応時間を抽出しました。

対応時間:Mid([回答],1,3)

しかし、Mid関数でとったフィールドは文字列として認識されています。(Ex:001など)
この文字列を数値に変換する関数、又は方法などお教えくださいませ。
よろしくお願い致します。

以下にイメージ図を記載致します。
=================================
回答            対応時間
001 ●●●~        001
=================================
(対応時間を数値で扱えるようにしたい、ということです)

Aベストアンサー

対応時間が、整数(-32,768 ~ 32,767)であれば、

対応時間:CLng(Mid([回答],1,3))


また、長整数(-2,147,483,648~2,147,483,647)であれば、

対応時間:CLng(Mid([回答],1,3))

とすればokのハズです。

Qaccessの勉強ができるサイトは?

access初心者です。
データベースを作ろうとしているのですが、
基本がしっかりと身についていないので、
なかなか作れません。
本をみながら勉強してはいるのですが、
チュートリアル本ではないので、(田舎なので売ってない)
基本がよくわかりません。
お薦めのサイトがありましたら、教えてください。

Aベストアンサー

これなら、
魔法使いの開発工房が有名です!
非常に内容がしっかり出来ていて、これだけあれば充分な知識は身につけられます。

http://www.mahoutsukaino.com/

ちなみに、これで学習すれば本はいらないと思う。

参考URL:http://www.mahoutsukaino.com/

QACCESSに同時アクセス(編集)をしたい

教えてください。
ACCESSのDBに複数のユーザが同時にアクセスして、
データを追加・編集したいのですが、
やはり、不可能でしょうか?

Aベストアンサー

マイクロソフトのアクセスに同時に複数のユーザが同時にアクセスして
データベースを操作することは可能です。いくつかの方法がありますが、
昔私が簡便に行なっていた方法は「テーブルのリンク」です。

あるコンピュータにアクセスでdb1という名前のデータベースを作って
ここにデータを格納しておきます。

他方で別のコンピュータに、アクセスでdb2という名前のデータベースを作ります。

このdb2というデータベースのメニューで

「ファイル」->「外部データの取り込み」->「テーブルのリンク」

というのがありますから、最初に作ったdb1をたどり、リンクしたいテーブルを
選択します。

こうすることにより、db2にdb1のテーブルがリンクされ(リンクテーブルと
呼ばれます。アイコンが通常のテーブルと違います。)、db1に格納された
データをdb2で編集することができます。

db2で、db1からのリンクテーブルを元にクエリーを作成することもできます。
リンクテーブルに対してできないことはテーブル構造の変更くらいで
他のことはだいたいできると思っていいかと思います。

このような形をとれば、ローカルエリアネットワーク内の複数のコンピュータ
から同時に同じアクセスデータベースにアクセスすることは可能かと思います。

このやり方にはおそらく問題もあるだろうと思うのですが、昔私がやって
いた頃は、特段支障もなく業務を行なうことができました。問題は、これを
読んだ他の誰かが指摘してくださるかと思います。

同じレコードに複数ユーザが同じタイミングでアクセスするとややこしい
ことになります。これを回避するためには、db2にワークテーブルを備えておき、
リンクテーブルからレコードを一度db2に格納し、編集を終了したのちに
リンクテーブルのレコードを削除し、ワークテーブルで編集したレコードを
リンクテーブルに追加する、などのルーティンをマクロやVBAで構築するのが
よいかと思います。私はそのようにしていました。

他に、ADOを使う方法などもあります。方法はいくつかありますから、
少し研究してみるといいですよ。(^-^)

マイクロソフトのアクセスに同時に複数のユーザが同時にアクセスして
データベースを操作することは可能です。いくつかの方法がありますが、
昔私が簡便に行なっていた方法は「テーブルのリンク」です。

あるコンピュータにアクセスでdb1という名前のデータベースを作って
ここにデータを格納しておきます。

他方で別のコンピュータに、アクセスでdb2という名前のデータベースを作ります。

このdb2というデータベースのメニューで

「ファイル」->「外部データの取り込み」->「テーブルのリンク」
...続きを読む

Q「Nullの使い方が不正です」のエラー

AccsessとVB間でデータの参照・登録・削除を行うプログラムを作成中です。
テキストボックスにデータを入力せずに更新するとAccess側はNull値が入るので、参照をした際に
「Nullの使い方が不正です」のエラーが表示されます。

Null値が表示可能ならその方法を教えてください。

Aベストアンサー

読み込んだ際にIsNull()で判断してみては?
If IsNull(Fields) Then
Text1.Text = ""
Else
Text1.Text = Fields
End If

Qアクセス: フォーム上で計算した数字をテーブルに保存したい。

 こんばんは。また質問させてもらいます・・。
これがアクセスに関して、最後の質問になるようにしたいです!!

 さて、フォームに入力したものは自動的にテーブルに保存されます。
しかし、フォーム上で計算したものは、テーブルに反映されていませんでした。
過去の質問にフォーム上計算したものは、テーブルに反映されないということがわかりました。
では、一体どうすればいいのでしょうか。

 フォームのコントロールソースには
=([QTY]*[COST]) 数量*値段を入れています。

どうすれば、テーブルに表示できるでしょうか。
ご教授お願いいたします。

過去の質問は、こちらを参考しました。
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1002073

Aベストアンサー

クエリーを覚えると便利です。
テーブル=オペレーターが入力したりする項目
クエリー=テーブルのデータプラスそれから計算出来るさまざまな項目

例えばQTYとCOSTはテーブルに
合計は 合計:[QTY]*[COST}
というようにクエリーに追加すれば、テーブルに
合計という項目を持つ必要がありません。
テーブルの「合計」を削除しても差支えありません。

また入力日という項目をテーブルに持ち
後の整理の目的でクエリーには
年:Year([入力日])
月:Month([入力日])
などとする事も可能です。

これで何年何月のデータだけを抽出したい場合でも
クエリーの抽出条件に 2004 とか 8(月)とかを
入力するだけでOKです。

合計、平均、最大、最小なども....

データベースはクエリーにあるレコードをいちいち保存するのではなく、計算式だけを覚えていて、開くたびに
計算して表示してくれるだけなのです。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報