受注エントリーで使用する商品クラスは、コンストラ クタの引数に指定した商品コードのレコードを商品マスター表から取得し、プロパティを仲介して、商品名称や販売金額を取得したり、セットしたりするクラスです。

基本クラス(基底クラス)ClsShohinBaseに、商品マスター表の選択・更新・削除・追加処理で共通で使うメンバーを実装します。抽象クラスなので、コンストラクタは実装しません。
派生クラスClsShohinに、商品マスター表の選択・更新・削除用のメンバーを実装します。コンストラクタでは、商品マスター表からレコードを取得します。
Option Strict On Imports System.Text.RegularExpressions '%%%%%%%%%%%%%%%% 基本抽象クラス:商品データ %%%%%%%%%%%%%%%%% Public MustInherit Class ClsShohinBase '--------------------< 定数メンバー >-------------------- Protected Const TABLE_NAME As String = "商品マスター表" Protected Const KEY_FIELD As String = "商品コード" '--------------------< 変数メンバー >-------------------- Protected sCodeValue As String ' 商品コード Protected sMeishoValue As String ' 商品名称 Protected tankaValue As Integer ' 販売単価 ' MustInheritなのでコンストラクタを宣言しない '------------------------------------------------------- ' プロパティ:商品名称 '------------------------------------------------------- Public Property ShohinMeisho() As String ' Getプロパティ Get Return sMeishoValue End Get ' Setプロパティ Set(ByVal sMeisho As String) ' 未入力ならエラー If sMeisho.Length > 0 Then sMeishoValue = sMeisho Else Throw New ShohinMeishoException("商品名称が未入力です") End If End Set End Property '------------------------------------------------------- ' プロパティ:販売単価 '------------------------------------------------------- Public Property Tanka() As Integer ' Getプロパティ Get Return tankaValue End Get ' Setプロパティ Set(ByVal tanka As Integer) ' 未入力ならエラー If tanka = Nothing Then Throw New HanbaiTankaException("販売単価が未入力です") End If ' 0以下はエラー If tanka > 0 Then tankaValue = tanka Else Throw New HanbaiTankaException _ ("販売単価に0円以下は設定できません") End If End Set End Property '******************************************************* ' 機能:商品コードのエラーチェックメソッド(プロシ-ジャ) ' 引数:商品コード ' 戻値:なし ' 補足:エラーがあれば例外をスロー '******************************************************* Protected Sub CheckShohinCode(ByVal sCode As String) ' 引数設定チェック If sCode.Length = 0 Then Throw New ShohinCodeException("商品コードが未入力です") End If ' 英数字以外はエラー If Not Regex.IsMatch(sCode, "^[0-9a-zA-Z]+$") Then Throw New ShohinCodeException _ ("商品コードに英数字以外の文字があります") End If ' 商品コード長さチェック(5桁以外はエラー) If Not sCode.Length = 5 Then Throw New ShohinCodeException _ ("商品コードの桁数が正しくありません") End If End Sub End Class '/////////////// 派生クラス:商品選択更新削除 //////////////// Public Class ClsShohin Inherits ClsShohinBase '======================================================= ' 機能:コンストラクタ ' 引数:商品コード '======================================================= Public Sub New(ByVal sCode As String) ' 最初に基本クラスのコンストラクタを呼び出す MyBase.New() ' 商品コードエラーチェック CheckShohinCode(sCode) ' 商品マスター表からレコード取得 Dim dbIO As New ClsHanbaiKanriDBIO( _ TABLE_NAME, KEY_FIELD, sCode) Dim dt As DataTable = dbIO.GetRowsData() If dt.Rows.Count = 1 Then ' レコードがあった時は正常 sCodeValue = sCode ' キー値 ShohinMeisho = CStr(dt.Rows(0)("商品名称")) Tanka = CInt(dt.Rows(0)("販売単価")) Else ' レコードがなかった時は例外スロー Throw New ShohinCodeException _ ("商品マスター表にレコードがありません") End If End Sub '------------------------------------------------------- ' プロパティ:商品コード(読取専用) '------------------------------------------------------- Public ReadOnly Property ShohinCode() As String ' Getプロパティ Get Return sCodeValue End Get End Property End Class
| ◆ DBアクセス TOP頁へ ◆ |
|---|
| ◆ SQL Server ◆ |
| Sql ExecuteScalar |
| Sql ExecuteReader |
| Sql ComboBox |
| Sql ListBox |
| Sql DataGridView |
| ◆ MDB ◆ |
| Ole ExecuteScalar |
| Ole ExecuteReader |
| Ole ComboBox |
| Ole ListBox |
| Ole DataGridView |
| ◆得意先マスター保守 TOP◆ |
|---|
| 得意先基本クラス |
| 得意先派生クラス |
| 販売管理DBアクセスクラス |
| 得意先マスターアクセス |
| 独自例外クラス |
| ●レコード追加仕様 |
| レコード追加画面 |
| 得意先マスター追加アクセス |
| ◆ 受注エントリー TOP頁 ◆ |
|---|
| テーブル定義 |
| データ接続の追加 |
| システム日付取得 |
| DataGridView列スタイル |
| フォームロード・初期化 |
| DBアクセス基本クラス |
| 商品クラス |
| 得意先クラス |
| 受注ディテールクラス |
| 受注ヘッダークラス |
| 受注伝票データクラス |
| 受注伝票アクセスクラス |
| 行確認・追加ボタン |
| 得意先確認・変更ボタン |
| 明細行変更・完了ボタン |
| 明細行削除ボタン |
| 受注登録ボタン |
| クリアボタン |