部署データクラス

Visual Basic ADO.NET [Community Express]

部署(部門)データ管理クラスの実装

フォームクラスで、データベースアクセスクラスのメソッドを直接呼び出さないようにするため、データ管理クラスとして部署(部門)データ管理クラスを新たに導入します。

サンプルプログラム

  • 入力データとデータベースのデータの受け渡しと、エラーチェックをする部署データクラスの作成
  • 部署データ管理基本クラスを作成。
    基本クラスでは、テーブル列(フィールド)項目と、追加・選択・更新・削除の共通処理を実装
  • 基本クラスは、オブジェクトインスタンスを生成しないので、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