#02 商品マスタをJANコード対応にする

販売顧客管理データベースにおいては、商品マスタデータは「mtbl商品マスタ」テーブルに保存されています。このテーブルでは、ある商品を一意に表す「商品コード」フィールドは、"オートナンバー型"になっています。したがって、商品を登録するごとに「1」から順番に自動的にコードが割り振られていき、ユーザーが勝手に書き換えることはできません。これは、このアプリケーションが、一般の流通品(つまりJANコードを持っている商品)を扱う店ばかりではなく、オリジナル商品やJANコードを持っていないような商品を扱っている店で利用されるケースを前提に考えてのことです。商品データのマスタ登録を少しでも楽にするため、値が自動採番されるオートナンバー型を採用しました。

一方、JANコードを持った商品ばかりを扱う店の場合、このデータベースの商品マスタテーブルにはそれを登録することができません。それに対処するためには次のようなテーブルデザインの変更を行わなければなりません。
  1. 「mtbl商品マスタ」テーブルの「商品コード」フィールドのデータ型を"テキスト型"に変更する。
    JANコードは13桁の数字から構成されていますが、これ自体を足したり引いたりといった演算を行うことはありません。また「先頭の2桁は日本を表す」というように、1桁1桁の文字が独立した意味合いを持って構成されています。このような場合には数値型ではなくテキスト型とするのが一般的です。

  2. フィールドサイズを「13」に変更する。
    JANコードは最大で13桁と決まっていますので、余分な長さのデータを入力しないよう、「フィールドサイズ」プロパティによってそれを制限します。

  3. バーコードリーダーを使う場合は必要ではありませんが、「定型入力」プロパティに「9999999999999」を設定しておくことも効果的です。
    数字しか入力できなくなりますので、これによってマスタ登録時のアルファベットなどの入力ミスを防止することができます。
    ※これはテーブルではなくフォームのテキストボックス上だけで設定してもかまいません。
現在のテーブルデザイン
現在のテーブルデザイン
変更後のテーブルデザイン
変更後のテーブルデザイン


さて、1つのテーブルだけから構成されたデータベースであれば、上記のちょっとしたデザイン変更だけで作業は完了なのですが、本データベースにおいては、これに関連して、「商品コード」フィールドを持っている他のいくつかのテーブルも同時に必ず変更しなければなりません。商品のキーである商品コードは、さまざまなテーブルに格納されるようになっているからです。

しかし、そこには大きな問題が立ちはだかっています。それは、それらのテーブル間にリレーションシップが設定されており、そこで結合されているフィールドはそのままではデータ型を変えられないということです。
リレーションシップ

したがって、実際には、上記の変更作業を行おうとすると、データ型を"テキスト型"に変更しようとした時点で次のようなエラーメッセージが表示され、その変更を行うことができません。
エラーメッセージ

ここでは、次のような方法で対処しなければなりません。リレーションシップの一時的な設定変更がネックになります。
  1. [ツール]-[リレーションシップ]メニューを実行します。
  2. 「mtbl商品マスタ」テーブルに結合されているすべての結合線の内容(結合先テーブル名や結合の種類、参照整合性)をメモします。これは実際には7本あります。
    結合線の設定内容
  3. 「mtbl商品マスタ」テーブルに結合されているすべての結合線を削除します。
    結合線を削除したところ
  4. リレーションシップの変更を保存してウィンドウを閉じます。
  5. 上記のデータ型の変更作業を行います。
  6. 再度リレーションシップのウィンドウを開きます。
  7. 「mtbl商品マスタ」テーブルに関連したすべての結合線を元の状態に復元します。
  8. 再度その設定を保存します。

ここでは、「mtbl商品マスタ」テーブルに関するリレーションシップの内容は完全に元の状態にしなければなりません。特に参照整合性の「連鎖削除」や「連鎖更新」の設定はのちのアプリケーションの動作に影響を及ぼしますので、細心の注意が必要です。

※このようなリレーションシップの影響を受けるテーブル構造を変更については、T'sWareの「リレーションシップ退避&復元ツール T'sRel」を使うと便利です。結合線の情報を控えることなく、一時退避や復元を行うことができます。


なお、本データベースでは、「商品コード」というフィールド名は次のテーブルで使われています。ワークテーブル(wtbl********)も同様に設定変更しなければなりません。今回対象としているのは「売上伝票入力」画面だけですので、その範囲では問題にならないものもありますが、データベース全体の機能においては、基本的にこれらすべてを同様に変更しておかないと正常な動作は期待できません。
  • mtbl商品マスタ
  • tbl見積明細
  • tbl在庫推移
  • tbl在庫明細
  • tbl仕入明細
  • tbl受払明細
  • tbl棚卸
  • tbl売上明細
  • tbl発注明細
  • wtbl月次更新最終仕入
  • wtbl月次更新在庫
  • wtbl月次更新総平均
  • wtbl見積明細
  • wtbl在庫推移
  • wtbl仕入明細
  • wtbl受払明細
  • wtbl売上仕入在庫一覧
  • wtbl売上仕入対比
  • wtbl売上推移
  • wtbl売上明細
  • wtbl発注明細
| Index | Prev | Next |

 

Copyright © T'sWare All rights reserved