社員マスター更新 [VB]

Visual Basic ADO.NET [Community Express]

社員マスター更新画面クラスの実装

社員マスターテーブルの1レコードを更新(Update)する画面プログラムを作成します。

サンプルプログラム

更新フォーム

社員マスターの1レコードを更新する画面クラスの仕様

【検索ボタン押下処理】

  • 社員コードを引数に指定して、社員データ更新クラスClsUpdateShainのインスタンスを生成(コンストラクタで、社員テーブルから引数にした社員コードのレコードを取得)
  • ClsUpdateShainの社員氏名プロパティと社員カナプロパティから、社員氏名と社員カナを取得して画面に表示

【更新ボタン押下処理】

  • 変更した社員氏名と社員カナを、社員氏名プロパティと社員カナプロパティで、ClsUpdateShainの内部変数にセット
  • ClsUpdateShainを引数に指定して、UpdateKeyRecordメソッドを呼び出して、社員テーブルのレコードを更新
社員マスター表
Key 列名 データ型 NULLを許容
社員コード nchar(5) しない
社員氏名 nvarchar(20) しない
社員カナ nvarchar(40) しない
部署コード nchar(4) しない
更新日時 datetime しない

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

Option Strict On

'////////// 社員テーブル更新画面クラス //////////
Public Class FormUpdate

    Private shain As ClsUpdateShain
    Private busho As ClsSelectBusho

    '----------<< フォームロード処理 >>----------
     Private Sub FormUpdate_Load(ByVal sender As System.Object, _
         ByVal e As System.EventArgs) Handles Mybase.Load

        ' 画面初期設定
        ClearForm()

    End Sub

    '----------<< 検索ボタン押下処理 >>----------
    Private Sub BtnRetrieval_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles BtnRetrieval.Click

        Try
            ' 社員データ更新クラスのインスタンス生成
            shain = New ClsUpdateShain(TxtShainCode.Text)
            TxtShainShimei.Text = shain.ShainShimei
            TxtShainKana.Text = shain.ShainKana

            ' 部署データ選択クラスのインスタンス生成
            busho = New ClsSelectBusho(shain.BushoCode)
            ' 取得した部署名にインデックスを設定
            CboBushoMei.SelectedIndex _
            = CboBushoMei.FindString(busho.BushoMei)

            ' 社員コード・検索ボタン入力不可
            TxtShainCode.Enabled = False
            BtnRetrieval.Enabled = False
            TxtShainShimei.Enabled = True
            TxtShainKana.Enabled = True
            CboBushoMei.Enabled = True
            BtnRetrieval.Enabled = False
            BtnUpdate.Enabled = True
            ' 社員氏名にフォーカス
            TxtShainShimei.Focus()

        Catch ex As myShainCodeException
            ' 社員コードエラー
            MessageBox.Show(ex.Message, "社員コードエラー")
            TxtShainCode.Focus()

        Catch ex As myDBIOException
            ' DBアクセスクラス独自例外発生時
            MessageBox.Show(ex.Message, "DBIO例外発生")

        Catch ex As Exception
            ' その他例外発生時
            MessageBox.Show(ex.ToString, "例外発生")

        End Try

    End Sub

    '----------<< 更新ボタン押下処理 >>----------
    Private Sub BtnUpdate_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles BtnUpdate.Click

        Try
            ' 社員テーブルのデータ行生成
            Dim row As DataRow
            row = shain.CreateDataRow()

            ' 画面データのセット
            row("社員コード") = TxtShainCode.Text
            row("社員氏名") = TxtShainShimei.Text
            row("社員カナ") = TxtShainKana.Text
            row("部署コード") = CStr(CboBushoMei.SelectedValue)

            ' 社員テーブルの更新処理
            shain.UpdateKeyRecord(row)

            ' 画面初期設定
            ClearForm()

            ' 正常終了
            MessageBox.Show("正常に更新されました", "更新処理")

        Catch ex As myShainShimeiException
            ' 社員氏名エラー
            MessageBox.Show(ex.Message, "社員氏名エラー")
            TxtShainShimei.Focus()

        Catch ex As myShainKanaException
            ' 社員カナエラー
            MessageBox.Show(ex.Message, "社員カナエラー")
            TxtShainKana.Focus()

        Catch ex As myBushoCodeException
            ' 部署コードエラー
            MessageBox.Show(ex.Message, "部署コードエラー")
            CboBushoMei.Focus()

        Catch ex As myDBIOException
            ' DBアクセスクラス独自例外発生時
            MessageBox.Show(ex.Message, "DBアクセスエラー")

        Catch ex As Exception
            ' その他例外発生時
            MessageBox.Show(ex.ToString, "例外発生")

        End Try

    End Sub

    '----------<< クリアボタン押下処理 >>----------
    Private Sub BtnClear_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles BtnClear.Click

        ' 画面初期設定
        ClearForm()
        ' 社員コードにフォーカス
        TxtShainCode.Focus()

    End Sub

    '----------<< 画面初期設定 >>----------
    Private Sub ClearForm()

        TxtShainCode.Text = Nothing
        TxtShainShimei.Text = Nothing
        TxtShainKana.Text = Nothing

        ' 部署テーブルの全レコード取得
        Me.busho = New ClsSelectbusho()
        ' コンボボックスに部署名を表示できるようにする
        CboBushoMei.DisplayMember = "部署名"
        ' 部署コードをSelectdValueで取得できるようにする
        CboBushoMei.ValueMember = "部署コード"
        ' コンボボックスにデータを連結する
        CboBushoMei.DataSource = busho.BushoData

        ' 社員コード・検索ボタン入力不可
        TxtShainCode.Enabled = True
        BtnRetrieval.Enabled = True
        TxtShainShimei.Enabled = False
        TxtShainKana.Enabled = False
        CboBushoMei.Enabled = False
        BtnRetrieval.Enabled = True
        BtnUpdate.Enabled = False

    End Sub

End Class