部署マスターIO [VB]

Visual Basic ADO.NET [Community Express]

部署テーブルアクセスクラスの実装

DBアクセス基本クラスから派生した部署テーブルアクセスクラスのレコード検索関連のメンバーです。

サンプルプログラム

部署マスターアクセスクラスは、sampleDBアクセス基本クラスを継承し、部署マスターアクセスに必要なメンバーを実装します。

sampleDBアクセス基本クラスにないメンバーはここに実装します。基本クラスあるメソッドと異なる部分があるメンバーは、Overloadsして実装します。

次の部署マスター検索に必要なメンバーを実装します。

  • コンストラクタ(引数:なし)
  • キー値レコード取得メソッド
  • キー値レコード存在チェックメソッド
部署マスター表
Key 列名 データ型 NULLを許容
部署コード nchar(4) しない
部署名称 nvarchar(20) しない
更新日時 datetime しない

ソースリストの枠内をクリックすると全選択できます。

Option Strict On
Imports System.Data.SqlClient
Imports System.Text.RegularExpressions
Imports System.Transactions            ' [参照の追加]で追加

'////////// 派生クラス:部署マスターアクセスクラス //////////
Public Class ClsBushoTableIO
  Inherits ClsSampleDBIO

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

      MyBase.New()

  End Sub

  '**********************************************************
  ' 機能:キー値のレコードの有無を調べるメソッド
  ' 引数:部署コード
  ' 戻値:レコードあり-->True、レコードなし-->False
  ' 補足:主キーフィールドはNChar型とする
  '******1*********2*********3*********4*********5**********6
  Public Overloads Function ExistKeyData(ByVal bushoCode As String) As Boolean

      Dim retExist As Boolean    ' リターン値

      ' 引数の空文字列チェック
      If bushoCode.Length = 0 Then
          Throw New myBushoCodeException _
          ("部署コードが未入力です")
      End If

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

      ' キー値長さチェック(部署コードは4桁)
      If Not bushoCode.Length = 4 Then
          ' 4桁以外はエラー
          Throw New myBushoCodeException _
          ("部署コードの桁数が正しくない")
      End If

      ' 引数のレコードの有無をチェックする
      retExist = MyBase.ExistKeyData _
          ("部署テーブル", "部署コード", bushoCode)

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

  End Function

  '**********************************************************
  ' 機能:引数のレコードを部署マスターから取得する
  ' 引数:部署コード
  ' 戻値:引数に指定した部署コードのレコード(DataTble型)
  ' 補足:主キーフィールドはNChar型とする
  '******1*********2*********3*********4*********5**********6
  Public Overloads Function _
      GetKeyData(ByVal bushoCode As String) As DataTable 

      Dim retDt As New DataTable   ' リターン値

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

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

      ' キー値長さチェック(部署コードは4桁)
      If Not bushoCode.Length = 4 Then
          ' 4桁以外はエラー
          Throw New mybushoCodeException _
          ("部署コードの桁数が正しくない")
      End If

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

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

  End Function

  '**********************************************************
  ' 機能:部署マスターの全レコードを取得する
  ' 引数:列名
  ' 引数:整列列名
  ' 引数:昇順ならTrue、降順ならFalse
  ' 戻値:取得した全レコード
  '******1*********2*********3*********4*********5**********6
  Public Overloads Function GetAllData(ByVal columns() As String, _
                 Optional ByVal sortKey As String = Nothing, _
                 Optional ByVal sorted As Boolean = True) As DataTable

      Dim retDt As New DataTable    ' リターン値

      ' 引数の空文字列チェック
      If columns.Length = 0
          Throw New myDBIOException _
              ("エラー:引数Columnsが未設定")
      End If

      ' 部署テーブルから全レコードを取得する
      retDt = MyBase.GetAllData _
          ("部署テーブル", columns, sortKey, sorted)

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

  End Function

End Class