マスターテーブルのレコード更新 [VB.NET]

Visual Basic.NET ADO.NETデータベースプログラミング

ADO.NET:UPDATE

CommandオブジェクトのExecuteNonQueryメソッドを使って、マスターテーブルの1レコードを更新するADO.NETのサンプルプログラム

MDB版 レコード更新サンプルプログラム

入力した社員コードのレコードを修正し、社員マスターテーブルの該当レコードを更新するプログラムを作成します。データベースsample.mdbはプロジェクトフォルダ下のbinフォルダに置きます。

マスターレコード更新初期画面
コントロール プロパティ 設定値
TxtSyainCode Text ""
TxtSyainSimei
TxtSyainKana
BorderStyle Fixed3D
ReadOnly True
TabStop False
BtnSelect Text 検索
BtnUpdate Text 更新
Enabled False

社員マスターテーブルのレコードを更新するプログラムで使用するクラスです。同じプロジェクト内にクラスファイル(クラス名.VB)を追加します。

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

Option Strict On
Imports System.Data.OleDb

Public Class FormUpdate
    Inherits System.Windows.Forms.Form

#Region " Windows フォーム デザイナで生成されたコード "
    ' 自動生成部分省略
#End Region

    ' データベースアクセスクラス
    Private dbIO As clsDBIO

    ' 社員データクラス
    Private syain As clsSyain

    '------------------------------------------------------------
    ' 検索ボタンクリック処理
    '------------------------------------------------------------
    Private Sub BtnSelect_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles BtnSelect.Click

        Dim retBool As Boolean

        Try
            ' 社員クラスオブジェクトインスタンス生成
            syain = New ClsSyain(Me.TxtSyainCode.Text)

            ' データベースアクセスオブジェクトインスタンス生成
            dbIO = New clsDBIO(syain.SyainCode)

            ' 社員テーブルからレコード取得
            Dim dt As DataTable = New DataTable()
            retBool = dbIO.getSyain(dt)
            If retBool = True Then
                ' レコード取得成功
                Me.TxtSyainSimei.Text = CStr(dt.Rows(0).Item(1))
                Me.TxtSyainKana.Text = CStr(dt.Rows(0).Item(2))
                ' 更新画面設定
                Me.UpdateForm()
            Else
                ' レコード取得エラー
                Dim errMsg As String = _
                    "社員テーブルにレコードがありません"
                MessageBox.Show(errMsg, "エラー")
                ' 画面初期化
                Me.InitForm()
            End If

        Catch ex As clsSyainCodeException
            ' 社員コードの例外が発生した時の処理
            MessageBox.Show(ex.Message, "社員コードエラー")
            ' 社員コードにフォーカス
            Me.TxtSyainCode.Focus()

        Catch ex As clsDBIOException
            ' DBアクセスの例外が発生した時の処理
            MessageBox.Show(ex.Message, "DBエラー")

        Catch ex As Exception
            ' 上記以外の例外が発生した時の処理
            MessageBox.Show(ex.Message, "エラー")

        End Try

    End Sub

    '------------------------------------------------------------
    ' 更新ボタンクリック処理
    '------------------------------------------------------------
    Private Sub BtnUpdate_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles BtnUpdate.Click

        Dim retBool As Boolean

        Try
            syain.SyainSimei = Me.TxtSyainSimei.Text
            syain.SyainKana = Me.TxtSyainKana.Text
            ' 社員マスターを更新
            retBool = dbIO.UpdateSyain(syain)
            If retBool = True Then
                Dim msg As String = "社員マスターを更新しました"
                MessageBox.Show(msg, "正常")
                ' 画面初期化
                Me.InitForm()
            Else
                Dim errMsg As String = _
                    "更新するレコードがありません"
                MessageBox.Show(errMsg, "エラー")
            End If

        Catch ex As clsSyainSimeiException
            MessageBox.Show(ex.Message, "社員氏名エラー")
            Me.txtSyainSimei.Focus()

        Catch ex As clsSyainKanaException
            MessageBox.Show(ex.Message, "社員カナエラー")
            Me.txtSyainKana.Focus()

        Catch ex As clsDBIOException
            ' DBアクセスの例外が発生した時の処理
            MessageBox.Show(ex.Message, "DBエラー")

        Catch ex As Exception
            ' その他例外が発生した時の処理
            MessageBox.Show(ex.Message, "例外発生")

        End Try

    End Sub

    '------------------------------------------------------------
    ' 画面初期化
    '------------------------------------------------------------
    Private Sub InitForm()

        Me.TxtSyainCode.Text = ""
        Me.TxtSyainKana.Text = ""
        Me.TxtSyainSimei.Text = ""
        ' 社員コードにフォーカス
        Me.TxtSyainCode.Focus()
        ' 更新ボタン不活性化
        Me.BtnUpdate.Enabled = False
        ' 氏名入力不可
        Me.TxtSyainSimei.ReadOnly = True
        Me.TxtSyainSimei.TabStop = False
        ' カナ名入力不可
        Me.TxtSyainKana.ReadOnly = True
        Me.TxtSyainKana.TabStop = False

    End Sub

    '------------------------------------------------------------
    ' 更新画面設定
    '------------------------------------------------------------
    Private Sub UpdateForm()

        ' 社員氏名にフォーカス
        Me.TxtSyainSimei.Focus()
        ' 更新ボタン活性化
        Me.BtnUpdate.Enabled = True
        ' 氏名入力可能
        Me.TxtSyainSimei.ReadOnly = False
        Me.TxtSyainSimei.TabStop = True
        ' カナ名入力可能
        Me.TxtSyainKana.ReadOnly = False
        Me.TxtSyainKana.TabStop = True

    End Sub

End Class