マスターテーブルアクセスクラス

得意先テーブルアクセスクラス

得意先テーブルアクセスクラスは、販売管理データベースアクセスクラスの派生クラスとして、次のメンバーを実装します。

  1. 定数・コンストラクタ
  2. 得意先マスター表から1レコード削除するメソッド
  3. 得意先マスター表の1レコードを更新するメソッド
  4. 得意先マスター表へ1レコードを追加するメソッド
'%%%%%%%%%% 得意先マスターテーブルアクセスクラス %%%%%%%%%%%%
Public Class ClsTokuisakiTableIO
  Inherits ClsHanbaiKanriDBIO

  '--------------------< 定数メンバー>--------------------
  Protected Const TABLE_NAME As String = "得意先マスター表"
  Protected Const KEY_FIELD As String = "得意先コード"

  '--------------------< 変数メンバー>--------------------
  'Protected tCodeValue As String         ' 得意先コード
  'Protected tNameValue As String         ' 得意先名称
  'Protected tJushoValue As String        ' 得意先住所
  'Protected tYuBangoValue As String      ' 得意先郵便番号

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

    ' 最初に基本クラスのコンストラクタを呼び出す
    MyBase.New(TABLE_NAME, KEY_FIELD)

  End Sub

  '*******************************************************
  ' 機能:得意先マスター表へ1レコード追加するメソッド
  ' 引数:追加する得意先マスター表データ
  ' 戻値:なし
  '*******************************************************
  Public Sub InsertRecord(tokuisaki As TokuisakiData)

    ' トランザクション開始()
    Using tran As New TransactionScope
      Using con As New SqlConnection
        Using cmd As New SqlCommand

          ' DBを開く
          ClsHanbaiKanriDBIO.OpenDB(con, cmd)

          ' 【得意先マスター表に追加】
          ' SQL文の生成
          cmd.CommandText = "INSERT INTO " & _
            TABLE_NAME & "(" & KEY_FIELD & _
            ", 得意先名称, 郵便番号, 得意先住所) " & _
            "VALUES(@tCode, @tName, @tYuBango, @tJusho)"

          ' SQL文の引数設定
          cmd.Parameters.Clear()
          cmd.Parameters.Add("@tCode", SqlDbType.NChar, 4)
          cmd.Parameters.Add("@tName", SqlDbType.NVarChar, 40)
          cmd.Parameters.Add("@tYuBango", SqlDbType.NChar, 7)
          cmd.Parameters.Add("@tJusho", SqlDbType.NVarChar, 50)

          ' 引数に値を設定
          cmd.Parameters("@tCode").Value = tokuisaki.tCode
          cmd.Parameters("@tName").Value = tokuisaki.tName
          cmd.Parameters("@tYuBango").Value = tokuisaki.tYuBango
          cmd.Parameters("@tJusho").Value = tokuisaki.tJusho

          ' 得意先マスター表へ追加
          Dim retInsertCount As Integer      ' リターン値
          retInsertCount = cmd.ExecuteNonQuery()

          ' 戻り値が1以外なら例外をスロー
          ' 自動的にロールバックされる
          If Not retInsertCount = 1 Then
            Throw New DBIOException _
            ("得意先マスター表への追加失敗")
          End If

        End Using
      End Using

      ' 正常にレコード追加完了
      ' トランザクション完了(コミット)
      tran.Complete()

    End Using

  End Sub

  '*******************************************************
  ' 機能:得意先マスター表の1レコードを更新するメソッド
  ' 引数:更新する得意先データ
  ' 戻値:なし
  '*******************************************************
  Public Sub UpdateRecord(tokuisaki As TokuisakiData)

    ' トランザクション開始
    Using tran As New TransactionScope
      Using con As New SqlConnection
        Using cmd As New SqlCommand

          ' DBを開く
          ClsHanbaiKanriDBIO.OpenDB(con, cmd)

          ' 【得意先マスター表を更新】
          ' SQL文の生成
          ' 注:他でマスター更新をする可能性があれば、
          ' 更新日時や全項目のデータ変更チェックをする
          cmd.CommandText = "UPDATE " & TABLE_NAME & _
              " SET 得意先名称=@tName, " & _
              "郵便番号=@tYuBango, " & _
              "得意先住所=@tJusho " & _
              "WHERE 得意先コード=@tCode"

          ' SQL文の引数設定
          cmd.Parameters.Clear()
          cmd.Parameters.Add("@tCode", SqlDbType.NChar, 4)
          cmd.Parameters.Add("@tName", SqlDbType.NVarChar, 40)
          cmd.Parameters.Add("@tYuBango", SqlDbType.NChar, 7)
          cmd.Parameters.Add("@tJusho", SqlDbType.NVarChar, 50)

          ' 引数に値を設定
          cmd.Parameters("@tCode").Value = tokuisaki.tCode
          cmd.Parameters("@tName").Value = tokuisaki.tName
          cmd.Parameters("@tYuBango").Value = tokuisaki.tYuBango
          cmd.Parameters("@tJusho").Value = tokuisaki.tJusho

          ' 得意先マスター表を更新
          Dim retUpdateCount As Integer          ' リターン値
          retUpdateCount = cmd.ExecuteNonQuery()

          ' 戻り値が1以外なら例外をスロー
          ' 自動的にロールバックされる
          If Not retUpdateCount = 1 Then
            Throw New DBIOException _
            ("得意先マスター表の更新失敗")
          End If

        End Using
      End Using

      ' 正常にレコード更新完了
      ' トランザクション完了(コミット)
      tran.Complete()

    End Using

  End Sub

  '*******************************************************
  ' 機能:得意先マスター表を削除するメソッド
  ' 引数:削除する得意先コード
  ' 戻値:なし
  '*******************************************************
  Public Sub DeleteRecord(tCode As String)

    ' トランザクション開始
    Using tran As New TransactionScope
      Using con As New SqlConnection
        Using cmd As New SqlCommand

          ' DBを開く
          ClsHanbaiKanriDBIO.OpenDB(con, cmd)

          ' 【得意先マスター表から削除】
          ' SQL文の生成
          cmd.CommandText = "DELETE FROM " & TABLE_NAME & _
              " WHERE " & KEY_FIELD & " = @tCode"

          ' SQL文の引数設定
          cmd.Parameters.Clear()
          cmd.Parameters.Add("@tCode", SqlDbType.NChar, 4)

          ' 引数に値を設定
          cmd.Parameters("@tCode").Value = tCode

          ' 得意先マスター表から削除
          Dim retDeleteCount As Integer          ' リターン値
          retDeleteCount = cmd.ExecuteNonQuery()

          ' 戻り値が1以外なら例外をスロー
          ' 自動的にロールバックされる
          If Not retDeleteCount = 1 Then
            Throw New DBIOException _
            ("得意先マスター表から削除失敗")
          End If

        End Using
      End Using

      ' 正常にレコード更新完了
      ' トランザクション完了(コミット)
      tran.Complete()

    End Using

  End Sub

End Class