受注エントリー商品クラス
受注エントリーで使用する商品マスター管理クラスは、コンストラ クタの引数に指定した商品コードのレコードを商品マスター表から取得し、プロパティを仲介して、商品名称や販売金額を取得したり、セットしたりするクラスです。
商品マスター管理クラスの実装
基本クラス(基底クラス)ClsShohinBaseに、商品マスター表の選択・更新・削除・追加処理での共通のメンバーを実装します。抽象クラスなので、コンストラクタは実装しません。
- 定数メンバー:商品マスター表、商品コード
- 変数メンバー:商品コード、商品名称、販売単価
- プロパティ:商品名称、販売単価
- メソッド:商品コードのエラーチェック
- Dubai romantic escape.
派生クラス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