ACCESSは少ししか使った経験がないのですが、こんな事が可能なのかなと思い投稿しました。
経理の仕訳処理をACCESSで出来る様にしたいと思い、試してる段階です。構成としては
・テーブル/仕訳メイン⇒①処理ID ②日付
・テーブル/仕訳サブ⇒①明細ID ②処理ID ③借方項目 ④借方金額 ⑤貸方項目 ⑥貸方金額
・テーブル/項目⇒①項目ID ②項目名
仕訳メインとサブは処理IDでリレーションして親子フォームを作成して入力。各項目はルックアップで選択形式
これで入力するイメージは出来たのですが、そのデータを使って仕訳帳が出来るかなと試しているのですが
借方・貸方が同じ行となります。メイン・サブを基にクエリで1レコードにしています。
理想としては借方・貸方を同じ処理IDであっても行を分けたいのです。
(日付) (借方項目)(借方金額) (貸方項目) (貸方金額)
6/1 売掛金 1000
6/1 売上 1000
レポートでそんな事は出来るのでしょうか? 根本的なテーブル構成を変えた方がいいでしょうか?(借方・貸方分ける等)
何かいいアイデアがあればお願いします。
1レコードにするからでは。
1レコードにする必要性がないように思いますが。
とりあえず現状の仕訳メインと仕訳サブのデータ例と、希望の結果出力例を提示してもらえますか。
上記の疑問点はとりあえず置いておいて、
1レコードのデータを2行にするなら、詳細セクションで、テキストボックスを2行になるように配置するだけのことだと思いますが。
hatena様 ありがとうございます。確かに配置ですね。レポートの基クエリは下記でどうかなと思ってます。
SELECT T仕訳処理Main.発生日付, T仕訳処理Sub.適用, T仕訳処理Sub.借方科目, T仕訳処理Sub.貸方科目, T仕訳処理Sub.借方金額, T仕訳処理Sub.貸方金額
FROM T仕訳処理Main INNER JOIN T仕訳処理Sub ON T仕訳処理Main.仕訳ID = T仕訳処理Sub.仕訳ID;
出力としては画像のイメージです(これはネットからの引用ですが)
とのことから、元は複数レコードになっていると解釈したのですが、
T仕訳処理Sub のデータ自体が 借方、貸方のデータが1レコードに格納されているということでしょうか。
なら、レポート上で2行に配置ですね。
hatena様 借方、貸方データはテーブルを分けておいた方が融通が効きますでしょうか?
各Subテーブルに処理IDをつけてMainテーブルにリレーションで(親フォームに子フォーム2つ配置する形)
フォーム入力時に(同じ取引上)借方で選んだ項目は貸方では選択できない、どちらかで選んだ項目に関連する項目だけが選択肢になる様な事もしたいと思ってます(まだそこまでは全然出来ていませんが)
経理には詳しくないのですが、分ける必要性はないように思います。
仕訳メイン と 仕訳サブ の関係性がよくわかりませんが、どのようなデータが格納されているのか、
データ例を提示してもらえませんか。
色々コメントありがとうございました。私自身経理担当ではなく詳しくはないのですが、日々の様々な取引が仕訳処理され、借方と貸方の合計金額は必ず合致します。項目は多数あります。売上高、売掛金、仕入れ高、買掛金 等。それらは借方、貸方のどちも使う項目となります。例えば1つの取引の仕訳で
仕訳明細ID 借方科目 借方金額 適用 貸方科目 貸方金額
1 売掛金 11,000 A社へ 売上高 10,000
2 消費税 1,000
こんな感じで借方or貸方のどちらかがNULLになることもあります。
例えば売上高に対しては売掛金、手形、現金等と選択肢は決まってきます。
経理担当がエクセルで処理しておりそこからデータ拾って色々な台帳作成しているのですが同じ事を何度も転記は手間でACCESSならこの仕訳入力だけでいけると思い。提案しているところなのです。経理ソフトもあるのですが自作の方がカスタマイズが自由にできていいなと思った次第です。(私自身別業務で少しだけACCESS使った経験があり、なんて便利なんだろうと感じたので)
仕訳サブ のデータ例ですね。
これと 仕訳メイン の関係はどのようなものですか。
仕訳メインが 処理ID 日付 の2フィールドだけなら、メインとサブに分ける必要もないと思います。
仕訳サブ の方に 日付 フィールドを追加すればすみますので。
メインサブフォーム形式にしたいのなら、メインフォームは非連結で、非連結の日付テキストボックスを配置すればすみます。
上記の点は除外して、現状のテーブル設計で特に問題はないと思いますが、どの辺に不満点がありますか。
りんごさん提案の設計法もあると思いますが、最初の質問のような出力をレポートでするなら現状の方が扱いやすいように思います。
hatena様ご意見ありがとうございます。親子フォームにしたいのでテーブルを1対多のリレーションの固定観念がありました。確かにメインが日付位であれば1レコードでいけますね。まだまだ試しの段階ですので日々の仕訳データを基に加工して色々な書類(最終的に決算書) の作成となります。経理の知識も平行して進めたいと思います。その際色々なコードが必要となりますのでまた質問させて頂きますね。あとご意見お聞きしたいのですがファームで入力の際、テーブル等を基にして直接する方法と非連結フォームを使い追加クエリーで登録する方法ありますが一般的にどうしているのしょうか? メリット・デメリットがあるのでしょうか?
とのことなので
き
う
このようなデータに対して問題のレポートで「行をずらす」をした場合、1レコードに左右両方のデータを保存してしまうと
のようになってしまいます。(行内で段を作って疑似的に行分けをしているだけでそれぞれの行が変わるわけではないため)
それと、1つの仕訳に関するデータが複数レコードになる場合があるので、どのデータがグループになっているのかという情報が必要になります。仕訳IDの設定とそれに付随して、仕訳メインテーブルの作成、日付は仕訳メインで登録というのはあってもいいと思います
というわけで、
項目
仕訳サブ
こんな感じでやるかなぁというのがhirotonの感想です
多対多のデータになるようなので結構大変な案件なんじゃないですかね
hiroton様ありがとうございます。確かにそうですね、その点は考えてみます。別の関連書類でどうしたら出来るのかなという事がでてきました。例えば日々の仕訳で下記の場合
仕訳ID 日付 借方科目 借方金額 貸方科目 貸方金額
1 6/1 普通預金 9,500 売掛金 10,000
2 支払い手数料 500
総勘定元帳(科目毎の履歴)には2つ以上の仕訳の場合”諸口”という表現での転記が必要で、売掛金用の台帳は
日付 相手方勘定科目(売掛金に対して) 借方金額 貸方金額 残高
6/1 諸口 ← 10,000 10,000
となるのです。この形にデータの加工はIIfか何かで可能でしょうか? いいアイデアありますでしょうか?
すみません、この件は解決できました。仕訳時の貸方金額-借方金額が0より大きい場合のIIfでいけました。
色々とありがとうございました。もう少し経理の知識身につけてACCESSに展開したいと思います。
非連結フォームは帳票表示できないので、基本1レコード毎での入力になります。
帳票表示で入力したい場合は、一時テーブルに転記してそれを更新する、更新後、クエリかVBAで元テーブルに反映させるという設計になります。
メリット
自由度が高い
複数ユーザーで共有する場合、データベース破損の危険性が低減する
デメリット
コード量が多くなる
Accessが自動でやってくれることをすべて自前でやる必要があるので、高いスキルが必要。
特に複数ユーザーで共有する場合、排他制御などかなり高度なスキルが必要です。
中途半端なスキルだとかえってデータ破損、整合性不可の危険性が高いです
連結フォームはメリットデメリット上記の逆になります。
データベース破損の危険性はユーザー数か一桁なら、めったに壊れません。
2桁以上のユーザーが同時更新するなら、危険性は高くなりますが、そうなると、SQLサーバーなどのRDBMSを検討した方がいいという話になります。
hatena様ありがとうございます。複数ユーザーで使用することはありません。現状は中途半端な知識なので非連結フォームはやめておいた方がいいですね。大変参考になりました。ありがとうございました。