郵便番号データ管理クラス
郵便番号データ管理クラスは、販売管理データベースアクセスクラスを再利用できるようにするため、新規に作成します。
このクラスは、販売管理データベースアクセスクラスのメソッドを呼び出すだけで、データベースをアクセスするメソッドを実装する必要はありません。
基本クラス・派生クラスの実装
最初に、基本クラスClsYubinBangoBaseに、郵便番号マスター表アクセスの共通のメンバーを抽象クラスとして実装します。
次に、派生クラス(レコード選択・更新・削除用)ClsYubinBangoには、コンストラクタと読取専用の郵便番号プロパティを実装します。
Key | 列名 | データ型 | NULLを許容 |
---|---|---|---|
● | 郵便番号 | nchar(7) | しない |
都道府県名 | nvarchar(4) | しない | |
市区町村名 | nvarchar(10) | しない | |
町域名 | nvarchar(20) | しない |
Option Strict On Imports System.Text.RegularExpressions '////////// 基本クラス:郵便番号データクラス ////////// Public MustInherit Class ClsYubinBangoBase '----------<< メンバー:定数 >>---------- Protected Const TABLE_NAME As String = "郵便番号マスター表" Protected Const KEY_FIELD As String = "郵便番号" '----------<< メンバー:変数 >>---------- Protected yBangoValue As String ' 郵便番号 Protected tMeiValue As String ' 都道府県名 Protected sMeiValue As String ' 市区町村名 Protected cMeiValue As String ' 町域名 '-------------------------------------------------------- ' プロパティ:都道府県名 '-------------------------------------------------------- Public Property TodofukenMei() As String ' Getプロパティ Get Return tMeiValue End Get ' Setプロパティ Set(ByVal tMei As String) ' 【エラーチェック】 If value.Length = 0 Then ' 未入力ならば例外スロー Throw New TodofukenMeiException("都道府県名が未入力です") Else tMeiValue = tMei End If End Set End Property '-------------------------------------------------------- ' プロパティ:市区町村名 '-------------------------------------------------------- Public Property ShikuchosonMei() As String ' Getプロパティ Get Return sMeiValue End Get ' Setプロパティ Set(ByVal sMei As String) ' 【エラーチェック】 If value.Length = 0 Then ' 未入力ならば例外スロー Throw New ShikuchosonMeiException("市区町村名が未入力です") Else sMeiValue = sMei End If End Set End Property '-------------------------------------------------------- ' プロパティ:町域名 '-------------------------------------------------------- Public Property ChoikiMei() As String ' Getプロパティ Get Return cMeiValue End Get ' Setプロパティ Set(ByVal cMei As String) ' 【エラーチェック】 If value.Length = 0 Then ' 未入力ならば例外スロー Throw New ChoikiMeiException("住所が未入力です") Else cMeiValue = cMei End If End Set End Property '******************************************************* ' 機能:郵便番号エラーチェックメソッド(プロシ-ジャ) ' 引数:郵便番号 ' 戻値:なし ' 補足:エラーがあれば例外をスロー '******************************************************* Protected Sub CheckYubinBango(yBango As String) ' 引数設定チェック If yBango.Length = 0 Then Throw New YubinBangoException("郵便番号が未入力です") End If ' 数字以外はエラー If Not Regex.IsMatch(yBango, "^[0-9]+$") Then Throw New YubinBangoException _ ("郵便番号に数字以外の文字があります") End If ' 得意先コード長さチェック(4桁以外はエラー) If Not yBango.Length = 4 Then Throw New YubinBangoException _ ("郵便番号の桁数が正しくありません") End If End Sub End Class '//////// 派生クラス:郵便番号選択更新削除クラス //////// Public MustInherit Class ClsYubinBango Inherits ClsYubinBangoBase '======================================================= ' 機能:コンストラクタ ' 引数:郵便番号 '======================================================= Protected Sub New(ByVal yBango As String) MyBase.New() ' 基本クラスのコンストラクタを呼び出す ' 郵便番号コードエラーチェック CheckYubinBango(yBango) ' 郵便番号マスター表からレコード取得 Dim dbIO As New ClsYubinBango( _ TABLE_NAME, KEY_FIELD, yBango) Dim dt As DataTable = dbIO.GetRowsData() If dt.Rows.Count = 1 Then ' レコードがあった時 yBangoValue = yBango ' 郵便番号 tMeiValue = CStr(dt.Rows(0)("都道府県名")) sMeiValue = CStr(dt.Rows(0)("市区町村名")) cMeiValue = CStr(dt.Rows(0)("町域名")) Else ' レコードが無かった時 Throw New YubinBangoException _ ("郵便番号マスター表にレコードがありません") End If End Sub '-------------------------------------------------------- ' プロパティ:郵便番号コード(読取専用) '-------------------------------------------------------- Public ReadOnly Property YubinBango() As String ' Getプロパティ Get Return yBangoValue End Get End Property End Class