今回のサンプル・アプリケーションでは、顧客からの注文(商品と数量)を次々とテーブルに記録していきます。まず、全体の仕様を把握しておきましょう。
- アプリケーションの概要 - アプリケーションの構造は、大きく2つに分かれます。
a.顧客を特定して伝票番号を生成する b.顧客の注文した複数の商品と数量をテーブルに記録する
処理全体が複雑になるため、今回は「a.顧客を特定して伝票番号を生成する」について紹介します。「b.顧客の注文した複数の商品と数量をテーブルに記録する」については、次回紹介します。
- データアクセスにコントロールを使わない理由 - ソースコードが長くなる理由は、処理自体が複雑になることもありますが、今回のアプリケーションではデータベースの制御にGUI化されたコンポーネント――コントロールを使わず、すべてソース中でコンポーネントを生成しているためでもあります。
Visual Studio .NETではデータアクセス用のコントロールをフォームに貼り付け、プロパティを設定していけば簡単にデータベースを扱う処理が作れます。しかし、それではデータアクセス・オブジェクトの機能も肝心のSQLとの関係も、よく分からないままアプリケーションが出来上がってしまいます。確かに便利ですが、それでは意味がありません。
また、コントロールを使うことでリソースを余分に消費し、内部のオーバーヘッドによって処理速度が(多少)低下することも考えられます。加えて、コントロールのプロパティ設定では、仕様変更に対してあとからSQLを書き換えるなどの小回りも利きづらくなります。
ソース中でオブジェクトを生成し、文字列としてSQLを明示的に与えることで、ソースは長くなりますが、コンパクトかつ高速でメンテナンス性も高いアプリケーションが作れます。
- アプリケーションの仕様 - アプリケーションの具体的な仕様を紹介しておきましょう。
a.顧客を特定して伝票番号を生成する
|
|
a-1.顧客の特定 ユーザーがお客様IDを入力すると、それをキーにしてテーブル「顧客_mr」からレコードを抽出し、該当する顧客の氏名や住所などを表示します。
a-2.伝票番号の生成 上記処理と同時に「日付+連番」形式の伝票番号を生成します。
a-3.レコードの追加 伝票番号、処理日付、お客様IDを、テーブル「売上ヘッダ」に1件のレコードとして追加します。 |
「売上ヘッダ」は売上(受注)情報の基本部分だけを記録するテーブルです。受注した商品とその数量は、テーブル「売上明細」に記録します。EnterpriseManagerでデータベース“db1001ya”のテーブル「売上ヘッダ」と「売上明細」のデザインを確かめておきましょう(後段の《注意》を参照してください)。
b.顧客の注文した複数の商品と数量をテーブルに記録する
|
|
b-1.商品の特定 ユーザーが商品IDを入力すると、それをキーにしてテーブル「商品_mr」から該当するレコードを抽出し、品名と販売単価を表示します。
b-2.数量の入力 上記の処理で特定された商品の受注数量を入力すると、数量と販売単価を乗算して合計金額を表示します。
b-3.1件の追加 [追加]ボタンをクリックすると、品名と数量、合計金額をテーブル「売上明細」に1件のレコードとして追加し、画面下部のグリッドに受注した商品の明細を表示します。 |
以降、b-1~b-3の処理を、1人の顧客から受注した商品の件数分繰り返します。
- 2つのテーブルの関係 -
この処理では、日付と顧客の情報(いつ・誰が)をテーブル「売上ヘッダ」に、販売した商品の情報(何を・何個)をテーブル「売上明細」に分けて記録します。1人の顧客が3種類の商品を注文すれば、「売上ヘッダ」には1件、「売上明細」には3件のレコードが記録される――ということです。
2つのテーブルの情報は、伝票番号を共有することで結び付けられます。
【注意】
サンプル・データベース“db1001ya”のテーブル「売上ヘッダ」は、初期状態(ダウンロードした直後の状態)で「伝票番号」フィールドが“IDENTITY”に指定されています。この状態だとアプリケーションから伝票番号の値を書き換えられないため、IDENTITY指定を解除しておいてください。
具体的には、以下のように操作します。
1. |
EnterpriseManagerでデータベース“de1001ya”を開く |
2. |
テーブルの一覧から“売上ヘッダ”を選択する |
3. |
右クリックでコンテキストメニューを表示して「テーブルのデザイン」を選択する |
4. |
「伝票番号」フィールドを選択する |
5. |
「プロパティ」で“IDENTITY”欄を「いいえ」に変更する |
これでテーブルへの変更を保存すれば、「伝票番号」フィールドの値をアプリケーションから書き換えられるようになります。
|
|
|