経理に必要なテーブルを設計する

Access 2000 で学ぶ業務アプリケーション開発―経理システムを作ってみよう―
第1回
経理に必要なテーブルを
載!
設計する
新連
金宏 和實
プログラミングの知識だけでは,実際に使える業務アプリケ
ーションを開発することはできません。特に業務アプリケーシ
ョンの開発には,業務に関する知識,設計技術,データベース
は大きな誤解です。経理のシステムを勉強することは,プログ
操作のテクニックなど,基本的なプログラミング作法以外の多
ラマだろうとSE(システム・エンジニア)だろうと,業務アプ
くの知識やノウハウが必要になります。
リケーションを開発する者にとって大きな意味があるのです。
そこで本連載では,業務システムの開発で必要な「知恵や考
例えば,データベース(DB)プログラミングの解説本の多く
え方」をできるだけ具体的に解説していきたいと思います。題
が「顧客管理システム」とか「販売管理システム」を作ろうと
材は「経理システム」
。開発プラットフォームとして,Access
いうテーマを扱っていますね。しかしこれらのシステムでは,
2000を使い,拡張子 mdbのデータベース・ファイルを扱うスタ
常に顧客(得意先)の要望や事情に対応する仕組みを作り込ま
「Accessの使い方やデ
ンドアロン・システムを開発します* 1。
なければなりません。顧客のニーズは業種や製品によってバラ
ータベースについての知識はある。でも実際にアプリケーショ
バラですから,それだけ例外的なロジックがたくさん必要です。
ンまで組んだことがない」という方や,
「Accessに限らず,業務
また,販売管理システムで扱う売上伝票や納品書,請求書,各
アプリケーションをどのように開発していくのかを知りたい」
種管理表も,製品や事業規模によって扱う情報が全然異なり
という方に役立つ内容にしていくつもりです。
ます。つまり販売管理システムというのは,解説本にあるよう
な仕組みが理解できたとしても,実際にはなかなか別のシステ
なぜ「経理システム」なのか?
まず,本連載を読み進めるにあたって,皆さんに用意しても
らいたいものを挙げておきましょう(表 1)
。Access 2000は当然
ですが,おそらく引っかかるのは「経理業務の知識」という部
分でしょうね。そもそもなぜ「経理システム」なのか。Access
でデータベース・アプリケーションの開発方法を学ぶといって
も,
「経理」という言葉にビビッてしまう方は少なくないかも
しれません。
経理というと皆さんはどんなイメージをお持ちですか?「地
ムへ応用しにくいものなのです。そのため,販売管理システム
は「Ill Structured System(構造化しにくいシステム)
」と呼ばれ
ることもあります。
一方,経理システムはどうでしょうか。経理業務は,
「簿記」
という学問の分野が確立されているので,論理的で体系化され
た手法に基づいて運用できます。例外処理もあまりありません。
「仕訳伝票」で科目ごとに入力した金額を集計し,並べ替えて
帳票を作成するのが経理システム――簡単に言ってしまえばそ
れだけのことなのです。つまり経理システムは「Well Structured
味な仕事」
「腕に黒いリスト・カバーをつけてやるような堅い
System(構造化しやすいシステム=構築しやすいシステム)
」と
仕事」こんな感じでしょうか? でも,
「経理システムなんて自
言うことができます。本連載で「経理システム」をテーマにす
分の仕事に関係ない」――もしそう思っているとしたら,それ
る理由はここにあります。
金宏 和實 (かねひろ かずみ)
イーザー(http://www.easier.co.jp/)代表取締役副社長。業務アプリ
ケーションの開発に携わって17 年。富山県高岡市出身かつ在住。地
方でライター活動ができるのは,宅配便とインターネットの普及のお
陰と感謝している。著書に「Access2000 Client/Serverアプリケーシ
ョン開発テクニック」
(秀和システム発行)など。本誌Webスペシャ
ル(http://software.nikkeibp.co.jp/software/special/special.html)の
「こうしろうのMindStorms日記」もよろしく!
180
H 2000 年 9 月号
* 1 Accessでは,スタンドアロン型シス
テムとして拡張子 mdbのファイルを扱
う方 法 と,クライアント/サーバー
(C/S)システムとして MSDE
(Microsoft Data Engine)を使い,拡
張子 adp,mdfのファイルを扱う方法
が選択できる。
経理に必要なテーブルを設計する
表 1●本連載において「Access2000 を使った経理システム」の開発に必要な材料
では,経理システムには,具体的にどのようなデータ
必要なもの
個数/分量
Access 2000
1本
ベースが必要なのか想像できますか? こういうとき,シ
Access 2000 が動作するパソコン
1台
ステムに対する入力(In)と出力(Out)のイメージを頭
Windows 対応のプリンタ
1台
に描き,そこから必要なデータベース構造を導き出すの
経理業務の知識
日商簿記 3 級程度の知識(があると望ましい)
が手っ取り早い方法です。でも,そもそも「経理や簿記
勇気
ひとつまみ
のことなんかさっぱりわからない」――きっと多くの皆
借方,貸方をやめて「左方」
「右方」にしても何の問題もない
さんがそう思っているでしょうね。たぶん,それがごく一般的
なプログラマの姿でしょう。かといって,筆者が簿記について
でしょう。複式簿記の原形は 14∼ 15世紀にイタリアで生まれ
本格的に説明し出したら,それだけで6回分の連載が終わって
たそうです。そのころは意味があったのかもしれませんが,現
しまいます。そこでここではまず,経理システムの開発に必要
在では形骸化されてしまい「借方」
「貸方」という呼称だけが
な簿記の最低限の知識についてざくっと説明します。ちょっと
残ったようです。
さて,どうして上
堅苦しい話かもしれませんが,我慢してお付き合いしてくださ
記の T字型の仕訳で
いね。これを把握したうえで,どのようなテーブルが必要なの
「現 金 が 10 万 円 増 え
かを考えてみましょう。
図 1●最も単純な T字型仕訳図
て,銀行の預金が 10
まずは勘定科目と六つの帳票を理解しよう
万円減った」ことが
現金 100,000
簿記について学ぶにあたり,さしあたって知っておいてほし
わかるのでしょう
いことは二つ,仕訳伝票の読み方とどんな帳票があるか,とい
か? 実は科目にはプ
うことです。まず仕訳伝票の読み方について説明しましょう。
ロパティ(属性)が
経理業務は,会社で発生したあらゆる取引を「仕訳伝票」と
あるのです。勘定科
して起票することから始まります。通常,ただ「簿記」と言っ
目は五つのカテゴリ
た場合は「複式簿記」のことを指し,T字型の仕訳伝票を作成
(資 産 勘 定 ,負 債 勘
します。例えば,銀行から10万円下ろして会社の金庫に保管し
定,資本勘定,収益
た場合の仕訳は図 1のように表記します。
勘定,費用勘定)に
現金
簿記では,
「現金」や「預金」のことを「勘定科目」と呼び
分類されていて,現
預金
ます。会社で発生するあらゆる取引を記録するのがルールなの
金,預金は資産勘定
で,勘定科目は150から250科目程度必要になります。また,図
カテゴリに属します
1の T字型の仕訳の左側を「借方(かりかた)
」
,右側を「貸方
(図 2)。資 産 勘 定 の
(かしかた)
」と呼びます。
「借方,貸方ってどういう意味?」
,
科目は「借方残」と
もっともな疑問です。実はこの言葉自体に意味はありません。
いうプロパティを持
預金 100,000
図 2●勘定項目の五つのカテゴリ
資産勘定
負債勘定
資本勘定
収益勘定
費用勘定
図 3●仕訳伝票のサンプル
伝票番号 00066 伝票日付 2000年4月19日
借方
科目コード
科目名
1010
普通預金
5012
支払手数料
摘要
補助科目コード 補助科目名 借方金額
0001
トマト銀行 ¥1,999,279 売掛回収
貸方
科目コード 科目名 補助科目コード 補助科目名
2010
売掛金
1011
貸方金額
ハクサイ商事 ¥2,000,000
¥721 振込手数料
借方合計
¥2,000,000
貸方合計
¥2,000,000
H 2000 年 9 月号
181
Access 2000で学ぶ業務アプリケーション開発
― 経理システムを作ってみよう―
っていて,借方(左側)に来た時はその科目の金額が増えたと
「損益計算書(P/L)
」
「貸借対照表(B/S)
」の六つの帳票です。
いう意味になります。逆に貸方(右側)に来た時は,金額が減
仕訳伝票は前述した通りです。図 1は単純すぎたので,もっと
ったことになります。ですから,図 1の仕訳は「現金が10万円
具体的なサンプルを紹介しましょう(図 3)
。これは「ハクサイ
増え,預金が10万円減った」と読めるのです。
商事に200万円あった売掛金が減って,普通預金が増えた」と
仕訳伝票の読み方が何となく理解できました? では次に経
いう仕訳です。銀行に手数料を 721円支払ったので預金は 199
理業務で使う帳票に注目してみましょう。ここで覚えてほしい
万 9279円増加したことがわかりますね。一方,このような仕訳
のが,
「仕訳伝票」
「仕訳日記帳」
「総勘定元帳」
「補助元帳」
伝票に入力するときに記述するチェック・リストが「仕訳日記
帳」です。仕訳日記帳というと何だか
「鬼平犯科帳」みたいで時代がかってい
図 4●損益計算書(P/L)のイメージ
ますから,本 連 載 では「仕 訳 チェッ
(単位:円)
ク・リスト」と呼び替えましょう。仕
当月
当期
訳データを勘定科目でグルーピングし
600
300
200
100
200
200
100
100
400
30
10
20
6,000
3,000
2,000
1,000
2,000
2,000
1,000
1,000
4,000
300
100
200
損益計算書(PL)
科目
営業損益
売上高
XX売上
XX売上
XX売上
売上原価
期首商品棚卸高
当月仕入
期末商品棚卸高
売上総利益
販売費および一般管理費
役員報酬
給料手当
旅費交通費
消耗品費
…
雑費
営業利益
営業外収益
受取利息
…
その他営業収益
営業外費用
支払利息
…
その他営業外費用
経常利益
特別利益
固定資産売却益
…
特別損失
固定資産売却損
税引前当期利益
法人税等
…
当期未処分利益
前期繰越利益
当期利益
182
H 2000 年 9 月号
て 1カ月分の伝票入力をまとめたもの
が「総勘定元帳」
,勘定科目と補助科
目で仕訳データをグルーピングした帳
票が「補助元帳」です。
「仕訳伝票」
「仕訳日記帳」
「総勘定
元帳」
「補助元帳」の四つの帳票は仕
訳データを明細化したものですが,各
科目の金額を集計して分析できるよう
にしたものが「損 益 計 算 書 (P/L)」
(図 4)と「貸借対照表(B/S)
」
(図 5)
です。図 4を見ても検算しないでくだ
さいね。あくまでもサンプル・データ
370
5
5
3, 700
50
50
ですから。100段ぐらいあるロッカーを
イメージしてください。勘定科目は一
つのロッカーに相当します。取引が発
生すると該当のロッカーに金額を書い
10
100
375
3,750
20
20
た札を放り込んでいきます。それを計
算規則にしたがって上から順に足した
り引いたりして会社の利益を求める,
これが損益計算書です。貸借対照表は
その名 の通 り,貸 (資 産 )と借 (負
10
385
30
10
3,760
300
385
100
485
3,460
1,000
4,460
債・資本)を照らし合わせる帳票で,
経理に必要なテーブルを設計する
資産―(負債+資本)=利益と見ることができます。損
益計算書と貸借対照表の二つの帳票は,別名「決算書」
図 5●賃借対照表(B/S)のイメージ
と呼ばれます* 2。
聞き慣れない専門用語ばかりで,あくびが出てきまし
た? では,このへんで,いよいよAccessに登場してもら
いましょう。まずAccessでデータベース・ファイル(mdb
ファイル)を作ります。
データベース・ファイルは二つ作ろう
通常,Accessを使ってデータベースを作成する場合,
一つのmdbファイルにテーブルやクエリー,フォーム,レ
ポート,モジュールなどを格納しますね。でもちょっと
考えてみてください。本当に一つの mdbファイルでいい
でしょうか?
例えば,ユーザーが間違った操作をしてしまい,以前
にバックアップした時点のデータに戻したいと考えたと
します。mdbファイルをリストア(復元)しなくてはい
けません。mdbファイルの場合は,バックアップやリス
トアと言っても単純にファイルのコピーです。もし,バ
ックアップ後にシステムを修正していたらどうなるか。
貸借対照表(BS)
資産の部
流動資産
現金
預金
受取手形
売掛金
…
固定資産
有形固定資産
建 物
構築物
…
無形固定資産
電話加入権
特許権
…
投資等
投資有価証券
保証金
…
繰延資産
ソフトウエア
(単位:円)
1,000
100
200
300
400
420
200 100 100
100 50
50
100 100 20
20 「モジュールにバグが残っていて直した」とか,
「フォー
負債・資本の部
流動負債
支払手形
買掛金
短期借入金
未払金
…
固定負債
長期借入金
社 債
…
引当金
800
100
100
300
300
300
200
100
50
資本金
準備金
資本準備金
利益準備金
剰余金
10,000
当期末未処分利益
前期繰越利益
当期利益
50
300
100
200 ムにフィールドを追加した」などのケースを考えてくだ
さい。リストアしたら,システム・オブジェクトも修正
前の状態に昔返りしてしまいます。
インテーマ,テーブル定義について考えてみます。
更新するタイミングの違うものは,別々の入れ物(ファイル)
に入れておくべきでしょう。データベースはテーブルだけ保存
帳票からテーブルをイメージする
するmdbファイルとシステム・オブジェクトを保存するmdbフ
前述したように,経理業務では六つの帳票を使います。これ
ァイルの二つに分割しましょう。具体的に今回の連載では,シ
らをベースに経理システムに対する入力(In)と出力(Out)を
ステム・オブジェクトを格納するファイルをkei.mdb,テーブル
イメージしてみましょう。基本的には,
を保存するファイルを kei_dt.mdbとします。
「kei」という名前
入力 → 仕訳伝票
のフォルダを作ってください。ハードディスクのどのドライブ
出力 → 仕訳チェック・リスト,総勘定元帳,補助元帳,
でも構いません。ここにAccessで二つのmdbファイルを作成し
ておくといいでしょう。
ファイルは作成できましたか。それでは,いよいよ今回のメ
損益計算書,賃借対照表
となることは,理解できると思います。このことから,仕訳伝
票のデータを入力する画面が必要なことは想像つきますね。仕
* 2 経理業務にコンピュータが導入さ
れたことにより,決算書は決算時だ
けでなく,毎月作成するようになっ
た。これが月次決算である。
H 2000 年 9 月号
183
Access 2000で学ぶ業務アプリケーション開発
― 経理システムを作ってみよう―
訳伝票のデータを入力すると,自動的に上記の帳票が作成でき
ードです。補助科目コードを入力したら補助科目名も表示して
ればいいわけです。
ほしいですよね。今回のシステムでは,補助科目として取引の
となると,まずは,入力した伝票データを保存するためのテ
相手を表す相手先コード(相手先 CD)を入力しますので,相
ーブルが必要です。伝票データは,
「マスター/詳細(Header-
手先を記録する「相手先マスター(M_相手先)
」を作成しま
Detailとも呼ぶ)
」形式に格納するのが一般的です。ヘッダー情
す。摘要はどうでしょう? 摘要には各仕訳明細の説明書きを
報の1レコードに対して複数の明細レコードが関係する形式で
入力します。勘定科目で取引の内容を表現することが経理業務
すね。そこで仕訳伝票のデータは,
「T_仕訳」
「T_仕訳明細」と
の基本ですが,勘定科目だけでは詳細な取引内容を表現しきれ
いう二つのテーブルに保存することにします。T_は,トランザ
ません。例えば,図 6の仕訳を見てください。諸会費という経
クションの頭文字です。トランザクション・データとは,
「生ま
費が5000円発生して,現金が5000円少なくなったということが
れては消えていくデータ」のことです。なんだか芭蕉の俳句み
わかります。でも,何の会費かわかりませんね。
「XX友の会」
たいですが,ライフサイクルの短いデータをトランザクション
の会費か,
「XX協会費」なのか。このような内容を説明するた
と考えればいいでしょう。仕訳データの寿命は,およそ 1年程
めに摘要を使用します。経理業務では毎月ほとんど同じような
度と思っていてください。一方,トランザクションに対してマ
スターという言葉があります。マスターとは,トランザクショ
仕訳が発生しますので,摘要もマスター化して「摘要マスター
(M_摘要)
」を作っておきましょう。
ンを入力する際にあらかじめ登録されている必要があるデータ
消費税の自動計算を行うために,消費税率も保存しておく必
のことです。あるいは,システムを運用していくうえで,ずっ
要があります。税率とその適用期間を「消費税率マスター(M_
と受け継がれていくデータ(寿命の長いデータ)と言うことも
消費税率)
」に保存しましょう。それから「今期は何期目であ
できるでしょう。ここでは,マスター・テーブル(マスター・
る」とか,
「現在,何月分の処理中である」といったシステム
データを格納するテーブル)に,M_という頭文字を付けるこ
をコントロールするための情報を保存する必要があります。ま
とにします。
た,決算書には会社名や代表者名を印刷しなくてはならないで
では,経理システムでのマスター・テーブルは何になるでし
ょうか? 図 3の仕訳伝票,特に明細行に注目してください。仕
訳伝票入力の画面では,科目コードを入力したら科目名が表示
しょう。これらをまとめて,
「基本情報マスター(M_基本情
報)
」というテーブルにします。
次に「ずっとデータを受け継いでいくマスター」を考えます。
されたら便利です。そこで,科目コードや科目名を保存する
損益計算書と貸借対照表を思い出してください。いずれも,科
「科目マスター(M_科目)
」が必要なことがわかります。科目
目ごとの当期累計金額と当月発生金額が必要です。仕訳伝票
にはその科目が借方残なのか貸方残なのか表すプロパティが必
上では各科目の金額が借方,貸方に分かれて発生しますので,
要です。また,損益計算書,貸借対照表のどちらに属するのか
「当期の借方累計」
「当期の貸方累計」
「当月の借方発生」
「当
を示すプロパティも必要です。経理システムは勘定科目を中心
月の貸方発生」のフィールドが必要になりそうです。これに加
に動きますので,科目マスターはコントール・センター的な役
えて,前期末の残高を保存するフィールドも必要です。例えば
割を果たします。例えば,消費税の自動計算を行う場合,科目
「現金」
「預金」
「車両運搬具」
「長期借入金」
「資本金」などの
マスター上に「売上という科目は仮受消費税を外税で計算す
科目は,会社の創業時からの残高をずっと計算し続けなければ
る」とか「消耗品費は仮払消費税を内税で計算する」という情
なりませんから,前期末に「いくらあったのか」を保存してお
報を持たせます。
く必要があるのです。科目ごとにこれらの金額を保存するテー
図 3を見ていて科目コードの次に気になるのが,補助科目コ
図 6●仕訳伝票のサンプル。これだけでは
細かい内容がわからない
諸会費 5,000
184
現金 5,000
H 2000 年 9 月号
ブルを「科目残高マスター(M_科目残高)
」としましょう。
経理に必要なテーブルを設計する
科目+相手先ごとに同様の金額を記憶するテーブルは
表 2●ここまでで想定したテーブル
分類
名称
概要
トランザクション
T_ 仕訳
仕訳伝票のヘッダー情報を格納
T_ 仕訳明細
仕訳伝票の明細情報を格納
M_ 科目
科目の定義や属性を格納
関連します。元帳,補助元帳には前月末の残高と当月の
M_ 相手先
相手先コードと名称を格納
借方・貸方発生金額,当月末の残高を記述します。補
M_ 摘要
摘要コードと名称を格納
助元帳の「残高」は科目+相手先別の残高になるからで
M_ 消費税率
消費税率や適用開始日などを格納
す。
M_ 基本情報
会社名や年度情報などを格納
M_ 科目残高
科目別の残高情報を格納
M_ 相手先別残高
相手先別科目別の残高情報を格納
「相手先別残高マスター(M_相手先別残高)
」という名
前で作成します。
「どうして相手先別の残高が必要な
の?」と思われるかもしれませんね。これは補助元帳に
マスター
さて,ここまでで定義したテーブルを整理しておきま
す(表 2)
。以降は,各テーブルの構造についてもっと詳
しく見ていきましょう。
表 3●科目マスターのテーブル構造
NO
名称
データ型
サイズ
備考
1
科目 CD
テキスト型
4
主キー
2
科目名
テキスト型
20
の科目にどのような属性があるのか定義するテーブルです(表
3
BSPL 区分
数値型
長整数型
3)
。主キー* 3 となる科目コード(科目 CD)は,Accessではテ
4
借方貸方区分
数値型
長整数型
キスト型 * 4 のフィールドとして定義してください。テキスト型
5
相手先有無
数値型
長整数型
より数値型* 5 のほうが,自動的にコード番号をカウントできる
6
税計算区分
数値型
長整数型
ので便利ですが,数字以外の文字も入力できるようにします。
7
税区分
数値型
整数型長
消費税の扱いが面倒な科目マスター
科目マスターは,どのような科目があるのか,またそれぞれ
数字だけだと,そのうち番号が足りなくなってしまう可能性が
あるからです。科目名はテキスト型でサイズを 20にしました。
える数値型にします。フィールドのサイズはデフォルトの長整
Access 2000は文字コードにUnicode(ユニコード)* 6 を採用し
数型を使います。BSに属する科目は決算時に残高を翌期に繰
ていますので,テキスト型でサイズ20と定義すると半角文字で
り越します。PLに属する科目は期変わりでクリアします。
も全角文字でも20文字まで入力できます。テキスト型のサイズ
は文字数でカウントすると覚えておいてください。
BSPL区分のBSとは,Balance Sheet(バランス・シート)つ
借方貸方区分は,残高を借方残で計算するか貸方残で計算
するかの区分です。0が借方残,1が貸方残です。例えば現金科
目の残高を計算する場合,現金は借方残ですので,
「前期末残
まり貸借対照表の略です。またPLはProfit And Loss(プロフィ
高+当期中に発生した借方金額―当期中に発生した貸方金額」
ット&ロス)つまり損益計算書の略です。BSPL区分は科目が
が残高となります。
BSに属するかPLに属するかを決める区分なのです。0のときは
相手先有無は,相手先別に残高を管理する科目(補助元帳
BS,1のときはPLを意味します。0か1だけなら,データ型とし
を作成する科目)か否かを示し,0が相手先別に管理しない,1
て,Yes/No型(真または偽の値を格納する)を使ってもよさ
が相手先別に管理するを意味します。
そうですが,区分コードとして扱うデータ型にYes/Noという論
一般に経理システムは,消費税が導入されてからちょっとや
理値を使うのは気分的にフィットしませんし,後述する税区分
やこしくなりました。得意先から預かった消費税と,仕入先な
などでは選択肢が三つになってくるので,それと同じように扱
どに支払った消費税の差額を計算して,納税する義務が発生し
*3
主キーは,テーブルの行(レコー
ド)をユニークに判別するためのフ
ィールド。
* 4 テキスト型は,テキストまたは計
算で使用しないような数値を入力す
る場合に用いる。最大で 255文字ま
で対応。
型。
* 5 数値型は,計算などで使用する数
* 6 Unicode(ユニコード) はUnicode
値を入力する場合に用いる。フィー
ルド・サイズを任意に指定できるほ
か,整数型,長整数型などを指定で
きる。デフォルトは長整数(Long)
Consortium(ユニコード・コンソー
シアム)によって開発された規格で,
一つの文字に基本的に 16ビット(2
バイト)のコードを対応させている。
H 2000 年 9 月号
185
Access 2000で学ぶ業務アプリケーション開発
― 経理システムを作ってみよう―
たからです。経理上の科目としては預かった消費税が「仮受消
5÷ 105 =1333.3333…が消費税になります。円未満のお金は流通
費税」
,支払った消費税が「仮払消費税」となります。例えば,
していませんので,端数を丸めます(図 7の(b))
。この仕訳が
ボールペンを 10本,単価 50円で購入し現金で支払ったとしま
正解です。こんな面倒な計算はコンピュータにまかせるべきで
す。物品代金が500円,消費税率が5%ですから消費税は25円
すよね。それが税計算区分と税区分の役割です。税計算区分は
ですね(この消費税率が変動するので,消費税率マスターが必
(0:計算しない,1:外税計算,2:内税計算)
,税区分は(0:
要になります)
。物品代金× 5÷ 100で消費税を求める方式が外
対象外,1:仮払消費税,2:仮受消費税)とします。
税方式です。
外税方式だけなら,消費税の計算もわりと簡単なのですが,
主キーで迷った時にはオートナンバー型
内税はやっかいです。例えば,得意先の部長を誘って気のきい
比較的単純な構造のテーブルが,相手先マスター(表 4の
た店で一杯やった場合です。
「ママ,お勘定」なんて得意先の
(a))
,摘要マスター(b),消費税率マスター(c)の三つです。相手
部長がトイレに立った隙に会計を頼むと,請求書とも領収書と
先マスターと摘要マスターは,コードと名称の関係を定義した
もつかない小さな紙に「2万 8000円也」と書いてあって,
「高い
だけのシンプルなものですね。一方,消費税率マスターでは,
な。でも明日経理に掛け合って落としてもらおう」なんて考え
消費税率とその適用期間を登録しています。実際のレコードは
て支払ったとします。さてこの仕訳はどうなるでしょう。
図 8のように登録すればいいでしょう。
図 7の(a)は間違いです。消費活動(浪費活動ではありませ
ここで注目してほしいのが,消費税率マスターでは税率キー
ん)には消費
というオートナンバー型のフィールドを主キーとしている点で
税が付いて回
す。単純に考えれば,消費税率を主キーにしてしまいそうです
ります。2 万
が,税率が変わってまた 3%に戻ったりしたら困ります(消費
8000 円 と い
者としては歓迎しますが…)
。主キーは同じ値のデータを複数
う代金の中
レコード持つことはできません。そこで,現実の経理業務には
から消費税
存在しない「税率キー」というオートナンバー型を使ったフィ
を抜き出さな
ールドを新たに設定しています。オートナンバー型のフィール
くてはいけま
ドは,新規にレコードを追加すると,自動的に重複しない値が
せん。この場
設定されます。
図 7●仕訳のサンプル。(a)は間違い。消費税を考慮
すると(b)のようになる
(a)
接待交際費 28,000
現金 28,000
(b)
接待交際費 26,667
仮払消費税 1,333
現金 28,000
このように,主キーに設定すべきフィールドがテーブル定義
合 ,28000 ×
上に見当たらない場合は,オートナンバー型のフィール
ドを追加して主キーにするといいでしょう。オートナン
表 4●相手先マスター,摘要マスター,消費税率マスターのテーブル構造
バー型のフィールドには「新規レコードの値」というプ
(a) 相手先マスター
NO
名称
データ型
サイズ
備考
ロパティがあり「インクリメント」と「ランダム」を選択
1
相手先 CD
数値型
長整数型
主キー
できます。
「インクリメント」を指定すると一つずつ値が
2
相手先名
テキスト型
30
(b)
増加します。
「ランダム」は乱数を発生させます。
摘要マスター
NO
名称
データ型
サイズ
備考
1
摘要 CD
数値型
長整数型
主キー
2
摘要
テキスト型
30
(C) 消費税率マスター
NO
名称
データ型
サイズ
備考
1
税率キー
オートナンバー型
長整数型
主キー
2
消費税率
数値型
倍精度浮動小数点型
3
適用開始日
日付/時刻型
4
適用終了日
日付/時刻型
186
H 2000 年 9 月号
図 8●消費税率マスターにデータを登録しているところ
経理に必要なテーブルを設計する
表 6●科目残高マスターのテーブル構造
表 5●基本情報マスターのテーブル構造
NO
名称
データ型
サイズ
備考
NO
名称
データ型
サイズ
備考
1
基本情報キー
数値型
長整数型
主キー
1
科目 CD
テキスト型
4
主キー
2
年度開始日
日付/時刻型
2
前期末残高
通貨型
3
年度終了日
日付/時刻型
3
当月借方
通貨型
4
会計期
数値型
4
当月貸方
通貨型
5
月次締日
日付/時刻型
6
会社名
テキスト型
30
5
当年借方
通貨型
7
代表者名
テキスト型
30
6
当年貸方
通貨型
8
消費税端数処理
数値型
長整数型
9
前期繰越利益 CD
テキスト型
4
10
仮払消費税 CD
テキスト型
4
NO
名称
データ型
サイズ
備考
4
1
科目 CD
テキスト型
4
主キー
2
相手先 CD
数値型
長整数型
主キー
3
前期末残高
通貨型
4
当月借方
通貨型
5
当月貸方
通貨型
6
当年借方
通貨型
7
当年貸方
通貨型
11
仮受消費税 CD
テキスト型
長整数型
基本情報,科目残高,相手先別残高
マスターの定義
基本情報マスター,科目残高マスター,相手先残高マスター
の三つは,経理処理のベースとなるテーブルです。
基本情報マスターには,会社の基本的な情報とシステムをコ
表 7●相手先別残高マスターのテーブル構造
ントロールするための情報を登録します(表 5)
。消費税端数処
理は仮払消費税,仮受消費税の自動計算を行う際に端数をど
う処理するかを指定します。1:切り捨て,2:四捨五入,3:
トランザクション・テーブルはその都度作る
以上,マスターとなるテーブルの構造を説明してきました。
切り上げ,とします。前期繰越利益 CD,仮払消費税 CD,仮受
各テーブルの簡単な関連図を示しておきましょう(図 9)
。科目
消費税 CDにはそれぞれの科目コードを登録します。前期繰越
マスターの科目コード(科目 CD)が,科目残高マスターや相
利益の科目コードは決算時に当期利益を繰り越すために使用し
手先別残高マスターでも主キーとして扱われていることがわか
ます。仮払消費税,仮受消費税の科目コードは消費税の仕訳
ると思います。
を自動的に作成するために使用します。
しかし,もちろん,これらだけで経理システムが作れるわけ
科目残高マスターは,経理システムの運用を始めるにあたっ
ではありません。特にトランザクション・テーブルは,前述し
て,開始残高を登録するテーブルです(表 6)
。期首からの導入
たT_仕訳,T_仕訳明細以外にも定義する必要があります。例
であれば,科目ごとに「前期末残高」を登録します。期中にシ
えば,仕訳伝票の伝票番号を自動採番するためのトランザクシ
ステムを導入する場合は「前期末残高」と導入月の前月までの
ョン・テーブルが必要ですね。でも伝票番号をどうやって自動
累計金額を「当年借方」
「当年貸方」に登録します。
採番すればいいでしょうか。よく使うアイデアとして,Access
相手先別残高マスターは,科目の残高を相手先ごとに集計・
のDMax関数 * 7 でテーブル内の最大伝票番号を求め,1を足し
記録するためのテーブルです(表 7)
。導入時には,開始残高を
て採番するという方法がありますが,データ件数が増えるとパ
登録します。このテーブルの主キーは科目 CD+相手先 CDから
フォーマンス面で問題があります。あまりオススメはできませ
成る複合キーです。
ん。今回は,最新の伝票番号を保存する「伝票番号採番(T_
*7
DMaxは,レコードセットに含ま
れる値の最大値を返す関数。例えば,
DMax("伝 票 番 号 ","T_ 仕 訳 ")とすれ
ば,T_仕訳テーブルの伝票番号の最
大値を返す。
H 2000 年 9 月号
187
Access 2000で学ぶ業務アプリケーション開発
― 経理システムを作ってみよう―
経理に必要なテーブルを設計する
図 10 ● Access でテーブル構造を定義しているところ
採番 _仕訳)
」テーブルを作りましょう。
もう一つ,仕訳伝票から一気に損益計算書などができるわけ
ではありません。前述したように,総勘定元帳や補助元帳など
の明細表が必要です。したがって,これら元帳を発行するベー
スとなる「元帳(T_元帳)
」テーブルを作りましょう。
このほかにも計算の途中結果を保存するワーク・テーブルな
どが必要になりますが,連載を進めるにしたがって,その都度
作成していくこととします。
テーブル作成時の注意
それでは,これまで説明してきたテーブル構造にしたがって,
実際にマスター・テーブルを作成してみてください。kei_dt.mdb
に作ってくださいね。なお,注意してほしいのがフィールド定
義のプロパティです(図 10)
。
例えば,
「書式プロパティ」* 8 はフォームやレポートでも設
ィ」* 9 もフォームで個別に設定するのではなく,テーブル定義
定できます。しかし,システム開発を進めていくと,一つのテ
時に設定しておきましょう。
「この項目は日本語を入力するフ
ーブルのフィールドを複数のフォームやレポートで使用するケ
ィールドである」と規定することもテーブル設計作業の一部で
ースが多いことに気付くはずです。あっちこっちでプロパティ
す。数値型や通貨型のフィールドにおいて,小数点以下何桁ま
を設定するよりも,あらかじめテーブル定義上で設定しておい
でを表示するかを決める「小数点以下表示桁数プロパティ」も
た方が1回で済むので楽ですよね。
「IME入力モード・プロパテ
同様です。また,数値型や通貨型のフィールドでは「既定値プ
ロパティ」に 0を設定しておく
と,後で計算処理を行う場合に
図 9●マスター・テーブルの関連図
都合が良いでしょう。Nullは計
科目マスター
相手先マスター
摘要マスター
消費税率マスター
科目CD
相手先CD
摘要CD
税率キー
算できませんから。
☆ ☆ ☆
さて今回はとりあえずマスタ
ー・テーブルの定義でおしまい
です。
「経理の話ばかりでつまら
基本情報マスター
科目残高マスター
科目マスター
基本情報キー
科目CD
科目CD
相手先CD
ないので,来月から読まないで
おこう」なんて思わないでくだ
さいね。そのうち,Accessのク
ラス・プログラミングについて
もお話しします。じっくりお付
:主キー
き合いください。ではまた! A
* 8 書式プロパティでは「数値」
「通
貨」
「標準」などの定義済みの書式を
選択することのほかに,書式指示文
字を使って独自の書式を作成するこ
ともできる。
* 9 IME入力モード・プロパティでは
188
H 2000 年 9 月号
単純に漢字変換をオン・オフするだ
けではなく,
「半角カナ」や「全角英
数」などに IMEのモードを設定する
こともできる。