得意先マスター管理クラス [VB]

Visual Basic ADO.NET [Community Express]

受注エントリー得意先クラス

受注エントリーで使用する得意先マスター管理クラスは、コンストラ クタの引数に指定した得意先コードのレコードを得意先マスター表から取得し、プロパティを仲介して、得意先名称や得意先住所を取得(ゲット)したり、セットしたりするクラスです。

得意先マスター管理クラスの実装

受注エントリー画面

【基本クラスメンバー】

基本クラス(基底クラス)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