- 締切済み
ACCESS2007にて、以下のようなデータベースを作るよう上司から言
ACCESS2007にて、以下のようなデータベースを作るよう上司から言われまして 取り組んでいるのですが以下の箇所で躓いてしまいました。 作成する物:約束手形の手形分割及び印紙額を自動計算する 会社の財務コンピュータ(所謂オフコンと呼ばれている古いものです)で仕訳を入力すると 以下のようなものが出来ますので、それを多少加工してAccessにインポートします。 インポートしたデータは、ここでは「A」というテーブルに追加されます。 伝票NO,支払先CD,振出日年月日,振出銀行CD,支払金額, (上記CDとはコードの事です。支払先別のデータベースが別にありここでは7ケタの数字です) 上記で1レコードとし、それが大体60~80レコードあるものとします。 次に、手形での支払金額に応じて節税対策としての手形分割をするのですが、現在の私の スキルではどのようにするべきか分からないでいます。 支払手形の分割条件は、分割後の端数が5万円以上10万未満であれば分割する (例:合計が105万円であれば、100万×1、5万×1の手形を作成する。) 事があるくらいです。 あとは一般的な分割条件を適用します。 上記経過を踏まえて、今回教えて頂きたい事を下記にまとめます。 1)分割前レコードから、分割後のレコードをそれぞれ作成して「新たなテーブルに追加」 するような方式を考えていますが、どのような方法で作成するのがベストでしょうか。 たとえば、ある1レコードが以下のような場合 0001,0123456,220920,771,3150000, (伝票NO 0001 平成22年9月20日振出のABC株式会社宛約束手形、金額3,150,000円) この1レコードを分割して 0001,0123456,220920,771,3000000, 0001,0123456,220920,771,150000, 伝票NOが重複しますが、他のフィールドを追加しても問題ありません。 (というより、管理上ナンバリングIDのようなものの追加は必要かも知れませんが…) できれば、マクロで作成する方法があればご教授頂きたいと思っています。 (当方まだSQLやモジュールに関しては理解が出来ているとは言えないレベルです) 2)手形金額別分割のロジックを条件に組み込まなければならないのですが、上記質問1 を踏まえたうえで、どのように作成すればいいのかご教授下さい。 かなりややこしい内容なのですが何かしらのヒントでもかまいません。 どのような点でもアドバイス頂ければ助かります。 何卒宜しくお願い致します。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- layy
- ベストアンサー率23% (292/1222)
分割のイメージは 0001,0123456,220920,771,3150000, から 0001,0123456,220920,771,3000000, と 0001,0123456,220920,771,150000, ですから まず 3150000から3000000を求める計算用の関数を作る クエリの編集で 0001,0123456,220920,771,3150000,関数の結果(3000000),差額(150000) とする。 次に 追加クエリで各2テーブルに分ける 0001,0123456,220920,771,3000000 と 0001,0123456,220920,771,150000 さらに 0001,0123456,220920,771,3150000,・・・・・・レコード区分1 0001,0123456,220920,771,3000000,・・・・・・レコード区分2 0001,0123456,220920,771,150000,・・・・・・レコード区分3 とでもレコード区分の項目をつけておけば 1つのテーブル内におさめることもできるし抽出条件で必要なもののみ取り出せる。 こんなイメージでどうですか。
- piroin654
- ベストアンサー率75% (692/917)
手形に関する印紙税は、 10万円以上100万円以下のもの 200円 100万円を超え200万円以下のもの 400円 200万円を超え300万円以下のもの 600円 300万円を超え500万円以下のもの 1千円 500万円を超え1千万円以下のもの 2千円 1千万円を超え2千万円以下のもの 4千円 以下省略 このようになっていますが、1000万以上は 分割しないとして、たとえば、質問の315万 だと、300万と15万ですから印紙代は800円。 この場合、分割される枚数は2枚。 400万だと200万2枚で800円。ただし、この 場合は補足の条件にはあてはまらない、とい うことになりますが。原則にはあてはめますか。 補足の「分割前合計金額が100万以上300万以下」 かつ、「分割後の残額が5万以上10万未満の場合」 ということで、印紙代との組み合わせで、 下限金額 上限金額 0 999999 1000000 1049999 1050000 1099999 1100000 2000000 2000001 2049999 2050000 2099999 2100000 3000000 という表をつくってみましたが、これを みれば、分割は2箇所、分割効果があるのは 1箇所です。つまり、1050000~10999999。 原則「手形分割は最小枚数にする」 「貼付する印紙額が最小になるようにする」 を守れば多分このような解釈になりますが、 これでいいのでしょうか。 これだと、分割前金額が1050000と1099999 の間の金額ならば分割する、というだけに なり、極簡単な方法になってしまいます。 つまり、 If 分割金額 >= 1050000 AND 分割金額 <= 1099999 Then 分割実行 End If のような感じです。1000万以下を設定しても 分割効果のあるのは数箇所ですむと思います。 これらの結果からプログラムするのは簡単ですが。
補足
詳細な回答、ありがとうございます。 実際、ご指摘の通りです。 分割効果のある1か所については、当社が過去からそのようなルールでやっていた というだけの理由で「そうなっている」だけで、とくに強い縛りはなさそうですが。 しかし実際効果はあるので、今後もこの縛りは有効ですね。 あと手形発行金額は1億円以内です、1000万以上の発行も結構ありますので これが頭を悩ませております…。
- piroin654
- ベストアンサー率75% (692/917)
315万の手形を分割する場合、300万と15万の手形に 分割されていますが、15万は分割の対象にならない のですね。 >分割後の端数が5万円以上10万未満であれば分割する 1315万のような場合は分割はどのようになりますか。 あるいは、1000万以上で端数がある場合はどのような 分割になりますか。それと分割する場合の最小単位は 質問の例だと100万以上のようですが。 分割条件によっては再帰関数のようなものになるので そのあたりをお聞きしたいのですが。
補足
ご質問有難うございます。 ご質問に対する回答になりますが「分割前合計金額が100万以上300万以下の場合で、なおかつ 分割後の残額が5万以上10万未満の場合」という表現が正しかったです。 1315万のような分割についてですが、原則「分割する場合、枚数が最小になるようにする」ので (そうしないと取引先様が困惑しますので)、「分割後の端数が5万円以上10万未満」という 条件は適用しません。 原則「手形分割は最小枚数にする」「貼付する印紙額が最小になるようにする」という形を 取っておりますが、こうなると条件分岐がすごい事になりそうですのである程度 妥協出来る部分は妥協したいと考えております。
お礼
ありがとうございます。 その案につきましては、当初に検討しておりましたが 分割パターンが多岐にわたるため、他の方法を…と思い質問した次第です。