社員マスターテーブルのレコード削除関連メンバーを実装
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