マスターテーブルアクセスクラス [VB]

Visual Basic ADO.NET [Community Express]

得意先マスターアクセスクラスの実装

販売管理データベースアクセス基本クラスから派生した得意先マスターアクセスクラスのレコード追加・更新・削除関連のメンバーを実装します。

クラスメンバー

  • コンストラクタ(引数なし)
  • 1レコード追加メソッド(引数:得意先データ構造体)

得意先データ構造体は得意先基本クラスの直前に宣言してあります。

Public Structure TokuisakiData
    Public tCode As String      ' 得意先コード
    Public tName As String      ' 得意先名称
    Public tJusho As String     ' 得意先住所
    Public tYuBango As String   ' 得意先郵便番号
End Structure
得意先マスター表
Key 列名 データ型 NULLを許容
得意先コード nchar(4) しない
郵便番号 nchar(7) しない
得意先名称 nvarchar(40) しない
得意先住所 nvarchar(50) しない

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

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

'/////////////// 得意先マスターアクセスクラス ///////////////
Public Class ClsTokuisakiTableIO
  Inherits ClsHanbaiKanriDBIO

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

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

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

  End Sub

  '**********************************************************
  ' 機能:得意先マスター表に1レコード追加するメソッド
  ' 引数:追加する得意先マスター表データ
  ' 戻値:追加したレコード数
  '******1*********2*********3*********4*********5**********6
  Public Function InsertRecord _
      (ByVal tokuisaki As tokuisakiData) As Integer

      Dim retInsertCount As Integer    ' リターン値

      ' トランザクション開始
      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

              ' 得意先マスター表へ追加
              retInsertCount = cmd.ExecuteNonQuery()

              ' 1レコード追加以外なら例外をスロー
              ' コミットしなければ、自動的にロールバックされる
              If Not retInsertCount = 1 Then
                  Throw New DBIOException("得意先マスター表への追加失敗")
              End If

          End Using
         End Using

        ' 1レコード追加なら正常(通常これしかありえない)
        ' トランザクション完了(コミット)
        tran.Complete()

      End Using

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

  End Function

End Class