DBアクセス基本クラスから派生した社員テーブルアクセスクラスのレコード更新関連のメンバーです。

社員テーブルアクセスクラスは、sampleDBアクセス基本クラスを継承し、社員マスターアクセスに必要なメンバーを実装します。
sampleDBアクセス基本クラスにないメンバーはここに実装します。基本クラスあるメソッドと異なる部分があるメンバーは、Overloadsします。
更新に必要な次のメンバーを実装します。
| 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 Implements IDBIO '========================================================== ' 機能:コンストラクタ ' 引数:なし '========================================================== Public Sub New() MyBase.New() End Sub '********************************************************** ' 機能:引数のレコードを社員マスターから取得する ' 引数:社員コード ' 戻値:引数に指定した社員コードのレコード '******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レコードを更新するメソッド ' 引数:ClsUpdateShainオブジェクト ' 戻値:更新したレコード数 '******1*********2*********3*********4*********5**********6 Public Function UpdateKeyRecord(ByVal shain As ClsUpdateShain) As Integer Dim retUpdateCount As Integer ' リターン値 ' トランザクション開始 Using tran As New TransactionScope Using con As New SqlConnection Using cmd As New SqlCommand ' 接続関連プロパティ設定 MyBase.SetConnection(con, cmd) ' SQL文の作成 cmd.CommandText = _ "UPDATE 社員テーブル " & _ "SET 社員氏名 = @shimei, 社員カナ = @kana, " & _ "部署コード = @bCode, 更新日時 = @newDate " & _ "WHERE 社員コード = @sCode AND 更新日時 = @date" ' SQL文引数に値を設定 cmd.Parameters.Clear() cmd.Parameters.Add("@sCode", SqlDbType.NChar, 5) cmd.Parameters.Add("@shimei", SqlDbType.NVarChar, 20) cmd.Parameters.Add("@kana", SqlDbType.NVarChar, 40) cmd.Parameters.Add("@bCode", SqlDbType.NChar, 4) cmd.Parameters.Add("@newDate", SqlDbType.DateTime) cmd.Parameters.Add("@date", SqlDbType.DateTime) cmd.Parameters("@sCode").Value = shain.ShainCode cmd.Parameters("@shimei").Value = shain.ShainShimei cmd.Parameters("@kana").Value = shain.ShainKana cmd.Parameters("@bCode").Value = shain.BushoCode cmd.Parameters("@newDate").Value = dateTime.Now cmd.Parameters("@date").Value = Shain.KoushinNichiji ' DB接続を開く con.Open() ' テーブルの更新を実行 retUpdateCount = cmd.ExecuteNonQuery() End Using End Using ' 1レコード更新なら正常(通常これしかありえない) If retUpdateCount = 1 Then ' トランザクション完了(コミット) tran.Complete() Else ' 1レコード更新以外なら例外をスロー ' コミットしなければ、自動的にロールバックされる Throw New myDBIOException _ ("ClsShainTableIO.UpdateKeyRecord:例外発生") End If End Using ' ◆戻値を設定してリターン Return retUpdateCount 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
| ◆ DBアクセス TOP頁へ ◆ |
|---|
| ◆ SQL Server ◆ |
| Sql ExecuteScalar |
| Sql ExecuteReader |
| Sql ComboBox |
| Sql ListBox |
| Sql DataGridView |
| ◆ MDB ◆ |
| Ole ExecuteScalar |
| Ole ExecuteReader |
| Ole ComboBox |
| Ole ListBox |
| Ole DataGridView |
| ◆ 受注エントリー TOP頁 ◆ |
|---|
| テーブル定義 |
| データ接続の追加 |
| システム日付取得 |
| DataGridView列スタイル |
| フォームロード・初期化 |
| DBアクセス基本クラス |
| 商品クラス |
| 得意先クラス |
| 受注ディテールクラス |
| 受注ヘッダークラス |
| 受注伝票データクラス |
| 受注伝票アクセスクラス |
| 行確認・追加ボタン |
| 得意先確認・変更ボタン |
| 明細行変更・完了ボタン |
| 明細行削除ボタン |
| 受注登録ボタン |
| クリアボタン |