受注エントリー得意先クラス
受注エントリーで使用する得意先マスター管理クラスは、コンストラ クタの引数に指定した得意先コードのレコードを得意先マスター表から取得し、プロパティを仲介して、得意先名称や得意先住所を取得(ゲット)したり、セットしたりするクラスです。
得意先マスター管理クラスの実装
基本クラス(基底クラス)ClsTokuisakiBaseに、得意先マスター表の選択・更新・削除・追加処理で共通で使うメンバーを実装します。抽象クラスなので、コンストラクタは実装しません。
- 定数メンバー:得意先マスター表、得意先コード
- 変数メンバー:得意先コード、得意先名称、得意先住所
- プロパティ:得意先名称、得意先住所
- メソッド:得意先コードのエラーチェック
派生クラスClsShohinに、商品マスター表の選択・更新・削除用のメンバーを実装します。コンストラクタでは、商品マスター表からレコードを取得します。
派生クラスClsTokuisakiに、得意先マスター表の選択・更新・削除用のメンバーを実装します。コンストラクタでは、得意先マスター表からレコードを取得します。
- コンストラクタ
- プロパティ:得意先コード
Option Strict On Imports System.Text.RegularExpressions '%%%%%%%%%%%%%%%% 基本抽象クラス:得意先データ %%%%%%%%%%%%%%%%% Public MustInherit Class ClsTokuisakiBase '--------------------< 定数メンバー >-------------------- Protected Const TABLE_NAME As String = "得意先マスター表" Protected Const KEY_FIELD As String = "得意先コード" '--------------------< 変数メンバー >-------------------- Protected tCodeValue As String ' 得意先コード Protected tMeishoValue As String ' 得意先名称 Protected tJushoValue As String ' 得意先住所 ' MustInheritなのでコンストラクタを宣言しない '------------------------------------------------------- ' プロパティ:得意先名称 '------------------------------------------------------- Public Property TokuisakiMeisho() As String ' Getプロパティ Get Return tMeishoValue End Get ' Setプロパティ Set(ByVal tMeisho As String) ' 未入力ならエラー If tMeisho.Length > 0 Then tMeishoValue = tMeisho Else Throw New TokuisakiMeishoException("得意先名称が未入力です") End If End Set End Property '------------------------------------------------------- ' プロパティ:得意先住所 '------------------------------------------------------- Public Property TokuisakiJusho() As String ' Getプロパティ Get Return tJushoValue End Get ' Setプロパティ Set(ByVal tJusho As String) ' 未入力ならエラー If tJusho.Length > 0 Then tJushoValue = tJusho Else Throw New TokuisakiJushoException("得意先住所が未入力です") End If End Set End Property '******************************************************* ' 機能:得意先コードのエラーチェックメソッド(プロシ-ジャ) ' 引数:得意先コード ' 戻値:なし ' 補足:エラーがあれば例外をスロー '******************************************************* Protected Sub CheckTokuisakiCode(ByVal tCode As String) ' 引数設定チェック If tCode.Length = 0 Then Throw New TokuisakiCodeException("得意先コードが未入力です") End If ' 数字以外はエラー If Not Regex.IsMatch(tCode, "^[0-9]+$") Then Throw New TokuisakiCodeException _ ("得意先コードに数字以外の文字があります") End If ' 得意先コード長さチェック(4桁以外はエラー) If Not tCode.Length = 4 Then Throw New TokuisakiCodeException _ ("得意先コードの桁数が正しくありません") End If End Sub End Class '/////////////// 派生クラス:得意先選択更新削除 //////////////// Public Class ClsTokuisaki Inherits ClsTokuisakiBase '======================================================= ' 機能:コンストラクタ ' 引数:得意先コード '======================================================= Public Sub New(ByVal tCode As String) ' 最初に基本クラスのコンストラクタを呼び出す MyBase.New() ' 得意先コードエラーチェック CheckTokuisakiCode(tCode) ' 得意先マスター表からレコード取得 Dim dbIO As New ClsHanbaiKanriDBIO(TABLE_NAME, KEY_FIELD, tCode) Dim dt As DataTable = dbIO.GetRowsData() If dt.Rows.Count = 1 Then ' レコードがあった時は正常 tCodeValue = tCode ' 得意先コード tMeishoValue = CStr(dt.Rows(0)("得意先名称")) tJushoValue = CStr(dt.Rows(0)("得意先住所")) Else ' レコードがなかった時は例外スロー Throw New TokuisakiCodeException _ ("得意先マスター表にレコードがありません") End If End Sub '------------------------------------------------------- ' プロパティ:得意先コード(読取専用) '------------------------------------------------------- Public ReadOnly Property TokuisakiCode() As String ' Getプロパティ Get Return tCodeValue End Get End Property End Class