データ管理基本クラス [VB]

Visual Basic ADO.NET [Community Express]

データベースの知識が不要なクラス

フォームクラスからは、データベースアクセスクラスのメソッドを直接呼び出さないで済むように、新たにデータ管理クラスを作成します。

システムを構築していくと分かりますが、エラーチェック時には、社員マスターにレコードがあるかないかのチェックをする必要があり、データベースへのアクセスを理解しなければなりません。データベースの知識がなくても、フォームクラスのプログラミングができるように、データ管理クラスを作成します。

社員データ管理基本クラス

クラス図

画面クラスの担当者には、できるだけ画面処理に集中したほうが、負担が少なくてすみます。

そこで、画面クラスではデータベースアクセスクラスを使用しないで済むように、別途、入力データとデータベースのデータの受け渡しと、エラーチェックをする社員データ管理クラスを作成します。

  • 基本クラスとして、社員データ管理クラスを作成(クラス図のオレンジ色)し、追加・選択・更新・削除の共通処理を実装
  • 基本クラスでは、オブジェクトインスタンスを生成しないので、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