#02 | 商品マスタをJANコード対応にする | ||
販売顧客管理データベースにおいては、商品マスタデータは「mtbl商品マスタ」テーブルに保存されています。このテーブルでは、ある商品を一意に表す「商品コード」フィールドは、"オートナンバー型"になっています。したがって、商品を登録するごとに「1」から順番に自動的にコードが割り振られていき、ユーザーが勝手に書き換えることはできません。これは、このアプリケーションが、一般の流通品(つまりJANコードを持っている商品)を扱う店ばかりではなく、オリジナル商品やJANコードを持っていないような商品を扱っている店で利用されるケースを前提に考えてのことです。商品データのマスタ登録を少しでも楽にするため、値が自動採番されるオートナンバー型を採用しました。 一方、JANコードを持った商品ばかりを扱う店の場合、このデータベースの商品マスタテーブルにはそれを登録することができません。それに対処するためには次のようなテーブルデザインの変更を行わなければなりません。
変更後のテーブルデザイン さて、1つのテーブルだけから構成されたデータベースであれば、上記のちょっとしたデザイン変更だけで作業は完了なのですが、本データベースにおいては、これに関連して、「商品コード」フィールドを持っている他のいくつかのテーブルも同時に必ず変更しなければなりません。商品のキーである商品コードは、さまざまなテーブルに格納されるようになっているからです。 しかし、そこには大きな問題が立ちはだかっています。それは、それらのテーブル間にリレーションシップが設定されており、そこで結合されているフィールドはそのままではデータ型を変えられないということです。 したがって、実際には、上記の変更作業を行おうとすると、データ型を"テキスト型"に変更しようとした時点で次のようなエラーメッセージが表示され、その変更を行うことができません。 ここでは、次のような方法で対処しなければなりません。リレーションシップの一時的な設定変更がネックになります。
ここでは、「mtbl商品マスタ」テーブルに関するリレーションシップの内容は完全に元の状態にしなければなりません。特に参照整合性の「連鎖削除」や「連鎖更新」の設定はのちのアプリケーションの動作に影響を及ぼしますので、細心の注意が必要です。 ※このようなリレーションシップの影響を受けるテーブル構造を変更については、T'sWareの「リレーションシップ退避&復元ツール T'sRel」を使うと便利です。結合線の情報を控えることなく、一時退避や復元を行うことができます。 なお、本データベースでは、「商品コード」というフィールド名は次のテーブルで使われています。ワークテーブル(wtbl********)も同様に設定変更しなければなりません。今回対象としているのは「売上伝票入力」画面だけですので、その範囲では問題にならないものもありますが、データベース全体の機能においては、基本的にこれらすべてを同様に変更しておかないと正常な動作は期待できません。
|
|||
|
Copyright © T'sWare All rights reserved |