部署(部門)データ管理クラスの実装
フォームクラスで、データベースアクセスクラスのメソッドを直接呼び出さないようにするため、データ管理クラスとして部署(部門)データ管理クラスを新たに導入します。
サンプルプログラム
- 入力データとデータベースのデータの受け渡しと、エラーチェックをする部署データクラスの作成
- 部署データ管理基本クラスを作成。
基本クラスでは、テーブル列(フィールド)項目と、追加・選択・更新・削除の共通処理を実装 - 基本クラスは、オブジェクトインスタンスを生成しないので、MustInheritキーワードを付加し、抽象クラスとして実装
Key | 列名 | データ型 | NULLを許容 |
---|---|---|---|
● | 部署コード | nchar(4) | しない |
部署名称 | nvarchar(20) | しない | |
更新日時 | datetime | しない |
ソースリストの枠内をクリックすると全選択できます。
Option Strict On Imports System.Text.RegularExpressions '////////// 基本クラス:部署データクラス ////////// Public MustInherit Class ClsBushoBase '----------<< メンバ:変数 >>---------- Protected bushoCodeValue As String Private bushoMeiValue As String Protected koushinNichijiValue As DateTime '======================================================== ' 機能:コンストラクタ ' 引数:なし '======================================================== Protected Sub New() MyBase.New() ' 基本クラスのコンストラクタを呼び出す End Sub '-------------------------------------------------------- ' プロパティ:部署名 '-------------------------------------------------------- Public Property BushoMei() As String ' Getプロパティ Get Return bushoMeiValue End Get ' Setプロパティ Set(ByVal value As String) ' 【エラーチェック】 If value.Length = 0 Then ' 未入力はエラー Throw New myBushoMeiException _ ("部署名を入力してください") Else BushoMeiValue = value End If End Set End Property '-------------------------------------------------------- ' プロパティ:更新日時 '-------------------------------------------------------- Public ReadOnly Property KoushinNichiji() As DateTime ' Getプロパティ Get Return koushinNichijiValue End Get End Property End Class '//////// 派生抽象クラス:部署データ選択更新削除クラス //////// Public MustInherit Class ClsBushoSub Inherits ClsBushoBase '======================================================= ' 機能:コンストラクタ ' 引数:なし '======================================================= Protected Sub New() MyBase.New() ' 基本クラスのコンストラクタを呼び出す End Sub '======================================================= ' 機能:コンストラクタ ' 引数:部署コード '======================================================= Protected Sub New(ByVal bushoCode As String) MyBase.New() ' 基本クラスのコンストラクタを呼び出す ' ---<< 部署テーブルからレコード取得 >>--- Dim bushoTable As New ClsBushoTableIO Dim dt As DataTable ' レコード取得メソッド呼出 dt = bushoTable.GetKeyData(bushoCode) If dt.Rows.Count = 1 Then ' レコードがあった時 MyBase.BushoCodeValue = bushoCode MyBase.BushoMei = CStr(dt.Rows(0)("部署名")) MyBase.KoushinNichijiValue = _ CDate(dt.Rows(0)("更新日時")) Else ' レコードが無かった時 Throw New myBushoCodeException _ ("部署テーブルにレコードがありません") End If End Sub '-------------------------------------------------------- ' プロパティ:部署コード '-------------------------------------------------------- Public ReadOnly Property BushoCode() As String ' Getプロパティ Get Return bushoCodeValue End Get End Property End Class '//////// 派生クラス:部署データ選択クラス //////// Public Class ClsSelectBusho Inherits ClsBushoSub Private bushoDataValue As DataTable '======================================================= ' 機能:コンストラクタ ' 引数:なし '======================================================= Public Sub New(ByVal bushoCode As String) MyBase.New(bushoCode) End Sub '======================================================= ' 機能:コンストラクタ ' 引数:なし '======================================================= Public Sub New() MyBase.New() ' 基本クラスのコンストラクタを呼び出す ' 部署テーブルから全レコード取得 Dim bushoTable As New ClsBushoTableIO ' レコード取得メソッド呼出 bushoDataValue = bushoTable.GetAllData( _ New String() {"部署コード", "部署名"}, _ "部署コード", True) If bushoDataValue.Rows.Count = 0 Then ' レコードが無かった時 Throw New myBushoCodeException _ ("部署テーブルにレコードがありません") End If End Sub '-------------------------------------------------------- ' プロパティ:部署全レコード取得 '-------------------------------------------------------- Public ReadOnly Property BushoData() As DataTable ' Getプロパティ Get Return Me.bushoDataValue End Get End Property End Class