社員マスター削除 [VB]

Visual Basic ADO.NET [Community Express]

社員マスターテーブルのレコード削除関連メンバーを実装

DBアクセス基本クラスから派生した社員テーブルアクセスクラスのレコード削除関連のメンバーを実装します。

サンプルプログラム

削除クラス図

社員テーブルアクセスクラスは、sampleDBアクセス基本クラスを継承し、基本クラスにないメンバーを実装します。

ここでは、削除に必要な次のメンバーを実装します。更新や検索関連のメンバーは除きました。

  • コンストラクタ(引数:なし)
  • キー値のレコード存在をチェックするメソッド
  • 引数に指定したテーブルのキー値のレコードを取得するメソッド
  • 引数に指定したテーブルのキー値のレコードを削除するメソッド
  • 行データ生成メソッド(社員マスター1レコードに対応)
社員マスター表
Key 列名 データ型 NULLを許容
社員コード nchar(5) しない
社員氏名 nvarchar(20) しない
社員カナ nvarchar(40) しない
部署コード nchar(4) しない
更新日時 datetime しない
Option Strict On
Imports System.Data.SqlClient
Imports System.Text.RegularExpressions
Imports System.Transactions            ' [参照の追加]で追加

Public Class ClsShainTableIO
  Inherits ClsSampleDBIO

  '==========================================================
  ' 機能:コンストラクタ
  ' 引数:なし
  '==========================================================
  Public Sub New()

      MyBase.New()

  End Sub

  '**********************************************************
  ' 機能:社員マスター主キー値レコードの有無を調べるメソッド
  ' 引数:社員コード
  ' 戻値:レコードあり --> True、レコードなし --> False
  '******1*********2*********3*********4*********5**********6
  Public Overloads Function _
      ExistKeyData(ByVal shainCode As String) As Boolean 

      Dim retExist As Boolean       ' リターン値

      ' 引数の空文字列チェック
      If shainCode.Length = 0 Then
          Throw New myShainCodeException _
          ("社員コードが未入力")
      End If

      ' キー値文字チェック(キー値は数字のみで構成されている)
      If Not Regex.IsMatch(shainCode, "^[0-9]+$") Then
          ' 数字以外はエラー
          Throw New myShainCodeException _
          ("社員コードに数字以外の文字があります")
      End If

      ' キー値長さチェック(社員コードは5桁)
      If Not shainCode.Length = 5 Then
          ' 5桁以外はエラー
          Throw New myShainCodeException _
          ("社員コードの桁数が正しくない")
      End If

      ' 社員テーブルに引数のレコードが存在するかチェックする
      retExist = MyBase.ExistKeyData _
          ("社員テーブル", "社員コード", shainCode)

      ' ◆戻値を設定してリターン
      Return retExist

  End Function

  '**********************************************************
  ' 機能:引数のレコードを社員マスターから取得する
  ' 引数:社員コード
  ' 戻値:引数に指定した社員コードのレコード
  '******1*********2*********3*********4*********5**********6
  Public Overloads Function _
      GetKeyData(ByVal shainCode As String) As DataTable 

      Dim retDt As New DataTable   ' リターン値

      ' 引数の空文字列チェック
      If shainCode.Length = 0 Then
          Throw New myShainCodeException _
          ("社員コードが未入力")
      End If

      ' キー値文字チェック(キー値は数字のみで構成されている)
      If Not Regex.IsMatch(shainCode, "^[0-9]+$") Then
          ' 数字以外はエラー
          Throw New myShainCodeException _
          ("社員コードに数字以外の文字があります")
      End If

      ' キー値長さチェック(社員コードは5桁)
      If Not shainCode.Length = 5 Then
          ' 5桁以外はエラー
          Throw New myShainCodeException _
          ("社員コードの桁数が正しくない")
      End If

      ' 社員テーブルから引数コードのレコードを取得する
      retDt = MyBase.GetKeyData _
          ("社員テーブル", "社員コード", shainCode)

      ' ◆戻値を設定してリターン
      Return retDt

  End Function

  '**********************************************************
  ' 機能:社員マスターから1レコードを削除するメソッド
  ' 引数:削除する社員コード
  ' 戻値:削除したレコード数
  '******1*********2*********3*********4*********5**********6
  Public Overloads Function _
      DeleteKeyRecord(ByVal shainCode As String) As Integer

      Dim retDeleteCount As Integer    ' リターン値

      ' キー値のレコード存在チェック
      If Me.ExistKeyData(shainCode) = True Then
          ' レコードが存在すれば削除
          retDeleteCount = MyBase.DeleteKeyData _
              ("社員テーブル", "社員コード", shainCode)
      Else
          ' レコードが存在しなければ例外をスロー
          Throw New myDBIOException _
              ("社員コードのレコードが存在しません")
      End If

      ' ◆戻値を設定してリターン
      Return retDeleteCount

  End Function

  '**********************************************************
  ' 機能:社員マスターの行データ生成
  ' 引数:なし
  ' 戻値:生成した行データ
  '******1*********2*********3*********4*********5**********6
  Public Overloads Function CreateDataRow() As DataRow

      Dim retRow As DataRow            ' リターン値

      retRow = MyBase.CreateDataRow("社員テーブル", "社員コード")

      Return retRow

  End Function

End Class