【VBAマクロ】AccessからExcel出力して請求書を作成する方法その1(テーブル構造編)
Accessデータベースで顧客管理をしている場合、請求書の出力は高い確率で必須項目となります。
データは集まっているのに、請求書だけ手打ちのエクセル作業なんてケースは意外と多いもの。
今回は、顧客管理をしているAccessデータベースからExcelの請求書を出力させるためのテーブル構造について紹介します。
請求内訳のテーブル構造は一対多にする
Accessから請求書を出力する際、最初に考えておきたいのが請求内訳データの持ち方です。
顧客情報は請求書1枚につき1レコードですが、請求内訳には複数の項目がぶら下がってきます。
しかも、顧客によって数が変わるので固定させるのも難しいでしょう。
請求内訳の項目数に応じてフィールドを作る方法もありますが、データの持ち方としては良いものではありません。
このことから、請求内訳のテーブルイメージを以下のように持つことが重要になります。
オレンジのテーブルでは顧客IDがユニークになっていますが、グリーンのテーブルではユニークになっていません。
このようにテーブル構築時から請求内訳テーブルを別で儲けて、メインとなるテーブルと一対多の関係になるようにしておくことがポイントです。
メインとサブの請求書テーブルを作る方法
では、実際に請求書出力に必要なメインテーブルと、サブとなる請求内訳のテーブルを作っていきましょう。
前述の例に従って作っていくので、メインテーブルでは顧客IDがユニークとなるように主キーを設定します。
一方で請求内訳を格納するサブテーブル側では、同じ顧客IDが重複する持ち方になるのでユニークにはしません。
代わりに請求内訳レコードに対して、ユニーク用のフィールドを設けて主キーとします。(ここではRowIDとします。)
Accessから請求書Excel出力はテーブル構造が最重要
請求書のような一対多のデータを持つ場合には、テーブル構造が最重要になります。
後から出てくるクエリやVBAの部分は、リリース後のシステム改修で取り返しのつく部分です。
しかし、テーブル構造を変えるには格納データの破損や誤った更新等のリスクが伴います。
まずはデータのイメージをしっかり考えて、フィールド作成に時間をかけるようにしましょう。
一対多のテーブル構造は、データベース構築の中で非常に多く出てくるので、理解を深めておくと便利です。
DeepBlueでは、VBAに関する質問や要件定義の相談を受け付けています。
今回、この記事を読んで登録してくれた方には初回のみ無料でVBAマクロに関する相談を承りますよ。
興味ある方は、是非チェックしてみてくださいね。
この記事が気に入ったらサポートをしてみませんか?