データベースの知識が不要なクラス
フォームクラスからは、データベースアクセスクラスのメソッドを直接呼び出さないで済むように、新たにデータ管理クラスを作成します。
システムを構築していくと分かりますが、エラーチェック時には、社員マスターにレコードがあるかないかのチェックをする必要があり、データベースへのアクセスを理解しなければなりません。データベースの知識がなくても、フォームクラスのプログラミングができるように、データ管理クラスを作成します。
社員データ管理基本クラス
画面クラスの担当者には、できるだけ画面処理に集中したほうが、負担が少なくてすみます。
そこで、画面クラスではデータベースアクセスクラスを使用しないで済むように、別途、入力データとデータベースのデータの受け渡しと、エラーチェックをする社員データ管理クラスを作成します。
- 基本クラスとして、社員データ管理クラスを作成(クラス図のオレンジ色)し、追加・選択・更新・削除の共通処理を実装
- 基本クラスでは、オブジェクトインスタンスを生成しないので、MustInheritキーワードを付加し、抽象クラスにします。
- 基本クラスでは、マスター表の列項目に対応するプロパティーを実装
- 社員コードプロパティーは、MustOverrideキーワードを付加して、派生クラスで実装
- 抽象クラスのコンストラクタは、Protected修飾子を明示するか、コンストラクタを実装しない
- 更新日時プロパティーは、読み取り専用なので、ReadOnlyプロパティとして実装
サンプルプログラム
ソースリストの枠内をクリックすると全選択できます。
Option Strict On Imports System.Text.RegularExpressions '////////// 基本クラス:社員データクラス ////////// Public MustInherit Class ClsShainBase '----------<< メンバ:変数 >>---------- Protected shainCodeValue As String Private shainShimeiValue As String Private shainKanaValue As String Private bushoCodeValue As String Protected koushinNichijiValue As DateTime '-------------------------------------------------------- ' 機能:コンストラクタ ' 引数:なし '----1---------2---------3---------4---------5----------6 Protected Sub New() MyBase.New() ' 基本クラスのコンストラクタを呼び出す End Sub '-------------------------------------------------------- ' プロパティ:社員氏名 '-------------------------------------------------------- Public Property ShainShimei() As String ' Getプロパティ Get Return shainShimeiValue End Get ' Setプロパティ Set(ByVal value As String) ' 【エラーチェック】 If value.Length = 0 Then ' 未入力はエラー Throw New myShainShimeiException _ ("社員氏名を入力してください") Else shainShimeiValue = value End If End Set End Property '-------------------------------------------------------- ' プロパティ:社員カナ '-------------------------------------------------------- Public Property ShainKana() As String ' Getプロパティ Get Return shainKanaValue End Get ' Setプロパティ Set(ByVal value As String) ' 【エラーチェック】 If Value.Length = 0 Then ' 未入力はエラー Throw New myShainKanaException _ ("社員カナを入力してください") Else ' 全角カタカナ以外はエラー If Regex.IsMatch(Value, "^[ァ-ー]+$") Then shainKanaValue = value Else Throw New myShainKanaException _ ("全角カタカナのみで入力してください") End If End If End Set End Property '-------------------------------------------------------- ' プロパティ:部署コード '-------------------------------------------------------- Public Property BushoCode() As String ' Getプロパティ Get Return bushoCodeValue End Get ' Setプロパティ Set(ByVal value As String) ' 【エラーチェック】 If value.Length = 0 Then ' 未入力はエラー Throw New myBushoCodeException _ ("部署コードを入力してください") Else ' 数字なら正常 If Regex.IsMatch(value, "^[0-9]+$") Then Dim dbIO As New ClsBushoTableIO ' 部署マスタにあれば正常 If dbIO.ExistKeyData(value) = True Then bushoCodeValue = value Else Throw New myBushoCodeException _ ("部署コードはありません") End If Else Throw New myBushoCodeException _ ("部署コードに数字以外の文字があります") End If End If End Set End Property '-------------------------------------------------------- ' プロパティ:更新日時 '-------------------------------------------------------- Public ReadOnly Property KoushinNichiji() As DateTime ' Getプロパティ Get Return koushinNichijiValue End Get End Property '********************************************************** ' 機能:社員テーブルの行データ生成 ' 引数:なし ' 返値:生成した行データ '******1*********2*********3*********4*********5**********6 Public Function CreateDataRow() As DataRow Dim retRow As DataRow ' リターン値 Dim dbIO As New ClsShainTableIO retRow = dbIO.CreateDataRow() Return retRow End Function End Class