【Access】数量×単価計算以外に直接金額を入力する方法

こんにちは! イマジネットPCサポートの橋崎です。
本日は久しぶりのAccessネタになります。
簡単な請求書作成システムのご依頼
今回、ご依頼頂いたお客様とは古くからのお付き合いです。
お客様はご商売をされていましたが、年齢的な事もあり現在は以前ほどお仕事はされていないようで、昔からお付き合いのあるお客様から声がかかればご依頼に応える程度だそうです。
以前は弥生販売で請求書を作成していましたが、現在は件数も少ないと言う事で手書きで対応していたようなんです。しかし件数が少ないと言えど一度、パソコンで請求書を作成すると中々手書きには戻れませんよね。
しかし弥生販売は以前のバージョンのままで、最新バージョンを購入しても変換が対応しておらずデータ移行ができません。
現在の弥生販売の最新バージョンは25です。データ変換は弥生25の場合では2世代前までとなっているようです。つまり23~24が対象となり、それ以前のバージョンは25にデータ移行はできません。
お客様は弥生販売ほど機能がなくてもよいので、もっと簡単に請求書が作成できるソフトがないかと聞かれました。
うーん そうですね・・・
弥生販売も結構簡単に操作できると思うのですが、やはり使用し続けるなら2年に一回バージョンアップが必要となり、コストもそれなりに必要になります。
弥生販売はこのような業務システムの中ではコストは低い部類に入りますが、現在の仕事状況ではそれほど費用もかけれないのが正直なところのようです。
なるほど
では簡単な請求書システムを作成致しましょう。
作成にあたり、ひとつ要望が・・・
請求書を作成するのであればExcelでもできますが、やはり顧客の履歴確認や集計はサッと確認出来た方がよいですよね。
勿論、そのような処理はExcelでも可能だと思いますが、今回はAccessで作成します。
作成すると言っても当店ではある程度ひな形のパーツはあるので、それを組み立てるイメージで作成します。つまりイチから作成する訳ではありません。
勿論、お客様のご要望によっては最初から作成するパーツもあります。
今回はパーツを作成するほどではありませんが、打ち合わせのために簡易版でデモをご覧頂いた時にこのようなご要望がありました。
商品明細の計算は数量×単価で行う分と単価計算しない方法の両方に対応してほしい。
文字ではわかりにくいですね。
もう少し具体的にご説明しますね。
これは売上入力時の商品明細のフォームですが、通常「数量」に個数を入力して「単価」を入力すれば「金額」に明細行の金額が自動入力されます。(商品マスタで登録すれば単価は自動入力されます。)

1000円の商品を2個の場合2000円となります。
まぁ いたって普通ですね。
仕組みは金額のテキストボックスに「数量×単価」の計算式が指定されているからです。Excelでも同じような事をよくしますよね。
お客様はこの計算方法とは別に数量も単価も入力せずに金額を入力できるようにしてほしいと言う事でした。
現行では金額はあくまで計算結果を表示しているだけなので、ここにはデータ入力する事は出来ないんです。
弥生販売ではあたりまえの機能ですが・・・
お客様も特別な要望を言っている訳ではありません。
元々、弥生販売ではそのような事は可能です。

弥生販売では数量と単価を入力すれば「数量×単価」で金額を算出します。
しかし、数量や単価を入力しなくても「金額」に直接入力する事もできるのです。
これは弥生販売がどのような業種にも対応できるように作成されている事が背景にあるのでしょう。今回のお客様もそうですが、「数量」「単価」で計算したくない項目もあるようです。
この場合、当店で作成したシステムでは対応できません。なぜなら先程も言ったように「金額」のテキストボックスはあくまで「数量×単価」の結果を表示するだけの箱なのでデータを入力する事はできません。
なぜ、このような仕組みにしているのか、実はAccessならではの事情もあるのです。
Accessの容量制限は意外に小さい。
Accessでデータベースを作成する場合、基本的にはデータ容量を抑えた構造を検討します。
その理由はAccessファイルの最大容量は1ファイルあたり2GBまでと制限があるからです。意外とデータの保存ができないのが現実なので、保存しなくてよいデータは保存しないように作成する事が望ましいのです。
例えば先程、見て頂いた明細の画像ですが、売上金額に必要なデータはどれになるでしょうか?

数量と単価を掛ければ金額はわかりますよね。
この場合、数量と単価は保存しますが、金額は保存しません。
金額はデータとして保存する訳ではなくあくまで表示されているだけなんです。
基本的にはこのように結果として判明するようなデータは保存しないように作成するのが、容量を抑える事に繋がります。
もしかするとこのような疑問に気が付く方もいるかも知れませんので、補足しておきますね。データを抑えるのなら単価も保存しなくても良いのでは? なるほど、そうですよね。単価は基本的に商品マスタなどに登録されているので、わざわざ保存する必要ないと考えるのは結構するどいです。しかし商売は生き物ですからこのような事もあります。今回は単価を通常1000円のところ900円にしなければいけない事もあるでしょう。このような場合では個別に単価を保存しておく必要があります。そうしないと変更した事に気が付きません。そのような事もあるので、単価は基本的に保存しておきます。
金額欄に直接入力できるようにしました。
今回は明細の金額も保存する仕組みに変更しますね。
勿論、容量制限の件もありますが、基本的にはテキストベースなので、あまり神経質になる事もないでしょう。
売上明細のテーブルに新規で「明細金額」を追加しました。ここに明細金額を保存するようにしましょう。
フォームは以下のように変更します。

矢印のテキストボックスには「数量×単価」の計算結果を入力する箱です。この箱はこの状態では見えていますが、本番では消えています。
仕組みとしては「数量」や「単価」を入力するとまずこの箱に計算結果を保持して一番右の「明細金額」のテキストボックスに保持したデータを転送するようにしました。
また、今度は明細金額もデータ保存できるようにしたので、直接「明細金額」のテキストボックスに数値を入力する事もできるので、ご要望通り動作するようになりました。
簡単に言えば一回経由するようにしたと言う事です。
あとがき
Accessは今回のようなマニュアルにない仕組みを考え実行する事に楽しみがあります。
最後に今回の件での懸念すべき点も指摘しておきますね。
弥生販売のように「数量×単価」の計算以外に金額も直接入力できる仕組みは以前から知ってはいました。しかし当店では積極的に取り入れる事はあまりしていなかったんです。
これには理由があって、今回のお客様とは違うお客様のお話ですが、時折、今回の件でお客様からクレームが来ていたお話を聞いていたからなんです。
そのお客様の場合では「数量×単価」の計算が主でした。
請求書を送付するとお客様から計算が違うと指摘が入る事があったのです。
大体、検討が付きますね。
そうなんです。
例えば単価1000円の商品を10個販売すれば10000円となります。
しかし金額を直接入力する事もできれば1000円×10が9000円とうっかり金額を入力してしまう事もあります。
まぁ このような単純な数値であれば気が付きますが、細かい小数点が入る業種の場合では気が付かない事もあるのが現実です。
今後は例えば数量や単価を入力した場合、計算結果と明細金額に相違があれば警告を出すようにする仕組みを検討する必要もありそうですね。
それでは、お疲れ様でした。
ご注意
記事内容についてのご質問の受付は時間が取れませんので行っておりません。
ご自身が使用しているパソコンの状態・環境により、同じような症状であっても同じとは限りません。したがって記事に書かれている内容を行う事で必ずトラブルが解消されるとは限りません。またこの記事を参考に作業される場合は自己責任でお願いします。作業された場合での損害や障害が発生しても当店は一切責任は負いませんのでご了承下さい。
この記事の内容は投稿日時点での内容です。時期によっては仕様などの変更により、この記事のとおりではない場合もございます。

大阪府八尾市を拠点に大阪府・奈良県・京都府南部を中心にパソコン出張サポートを20年近く自営で行っています。パソコン・周辺機器のトラブルやご相談はお気軽にお問い合わせください。
詳しくはこちらから