データベース千夜一夜第17回

プログラミングとSQL(5)
~販売データの入力処理(後編)
長谷川裕行
有限会社 手國堂

プログラミング言語からSQLを扱う実例として、前回は販売(受注)データ入力処理の前半部分を紹介しました。今回はその続きとして、商品の確定と金額の計算、グリッドへの明細表示、テーブルへのレコード追加処理などを紹介します。

前回紹介した部分は処理全体から見れば「前準備」と言え、SQLもデータオブジェクトの扱いも、これまでのおさらい的なものでした。今回紹介する本質部分では、データオブジェクトとグリッドの連結や合計金額の計算など、応用を利かせなければならない処理が登場します。

プログラミングそのものは本コラムのテーマではないので、テクニックについてあまり詳しく紹介はできませんが、Visual Studio .NETとADO.NETを用いたデータベース・アプリケーションの参考になれば幸いです。


サンプル・データベースとサンプル・アプリケーションの扱いについて
第9回以降、新しいサンプル・データベースを使っているのでご注意ください。新しいサンプル・データベースの登録方法については、第9回の記事から「新しいサンプルデータベースの準備」の項をお読みください。

今回も、VB .NETによるサンプル・アプリケーションを作成します。プロジェクトファイルをダウンロードし、任意のフォルダに解凍してください。サンプルのプロジェクトは“ex01”という名前のフォルダに保存されます。フォルダ名は前回と同じなので、上書きしないように注意してください。

ソースコードを入力して実際にプログラミングを試す場合は、パソコンにVisual Studio .NETがインストールされている必要があります。

Visual Studio .NETでプロジェクト(ex01.sln)を開いてもフォームデザインやソースコードが表示されない場合は、「ソリューション エクスプローラ」で“Form1.vb”をダブルクリックしてください。フォームデザインが表示されます。この状態でフォームをダブルクリックすればソースコードが表示されます。

出来上がった実行形式ファイルを試すだけの場合は、拡張子.exeのファイル(ex01.exe)をダブルクリックしてください。なお、サンプルを実行するにはパソコンに .NET Frameworkがインストールされていなければなりません。

また、SQL Serverはローカルで稼働していることを前提にしています。環境が異なる場合は、ソースコードの該当箇所(ConnectionStringに与える接続文字列)を適宜書き換えてください。

なお、今回のプロジェクトは処理の前半部分のみとなっています。これだけでは全体が見通せないので、exeフォルダの中にex01.exeと共に完成したexeファイル“complete.exe”も含めてあります。


[注意1]
前回のサンプルを試してテーブル「売上ヘッダ」にレコードを追加した場合、今回のサンプルを試す前に、必ずEnterpriseManagerで「売上ヘッダ」の全レコードを削除しておいてください。そうしないと、今回のサンプルを試したとき、レコード件数に矛盾が発生します。

実際には、そのまま(「売上ヘッダ」のレコードを残したまま)でも処理は正常に実行されます。ただ、伝票番号の連番部分に「前飛び」が発生したり、明細の存在しない「売上ヘッダ」のレコードが残ったままになるなど、何となく『気持ちの悪い状態』になるだけです。そのあたりの理屈をわかっている人は、「売上ヘッダ」の全レコードを削除しなくても構いません。

[注意2]
サンプル・データベース“db1001ya”のテーブル「売上ヘッダ」は、初期状態(ダウンロードした直後の状態)で「伝票番号」フィールドが“IDENTITY”に指定されています。この状態だとアプリケーションから伝票番号の値を書き換えられないため、前回の《注意》を参考にしてIDENTITY指定を解除しておいてください。

[注意3]
今回取り上げているサンプルは、バーコードやOCRカードリーダーなどを使ってデータを連続的に入力していく仕様を前提にしているため、キーボード入力によるエラー発生時の対処などは省略してあります。サンプルを試す前に、前回の本コラム「サンプルのためのデザイン」のところに示した仕様の制約をご確認ください。

また、サンプルの仕様とフォームデザインなどについても、前回のコラムで確認してください。


- 目次 -
後半部分の概要
取引件数と商品件数
3つのブロック
1.商品の特定
売上情報の入力~txtItemId_LostFocus
商品情報を表示~SearchItem
2.数量の入力~txtNumItems_LostFocus
数量と単価を乗算する
型変換と書式化
3.1件の追加
1件分の情報をグリッドに表示~btnAdd_Click
明細をテーブルに追加~AddDetail
DataGridに売上明細を表示~UpdateGrid
売上の総合計金額を表示~DispTotal
その他の処理
次の入力の準備(初期化)~btnNextCstm_Click
終了処理~btnClose_Click
補足
リレーションとレコードの定着
レコード定着のタイミング
パフォーマンス低下を避ける手段
あとがき
長谷川 裕行 (はせがわ ひろゆき)
有限会社 手國堂 代表取締役  http://www.hirop.com/

大阪芸術大学 写真学科講師。フリーライター。日経ソフトウェアなどに連載。
『ソフトウェアの20世紀』、『独習SQL』など著書多数。

Copyright © MESCIUS inc. All rights reserved.