マスターテーブルからレコード削除 [VB.NET]

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

ADO.NET:DELETE

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

MDB版 レコード削除サンプルプログラム

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

マスターテーブル削除画面
コントロール プロパティ 設定値
TxtSyainCode Text ""
LblSyainSimei
BorderStyle Fixed3D
LblSyainKana BorderStyle Fixed3D
BtnSelect Text 検索
BtnDelete Text 登録
Enabled False

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

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

Option Strict On
Imports System.Data.OleDb

Public Class FormDelete
    Inherits System.Windows.Forms.Form

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

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

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

    '------------------------------------------------------------
    ' 検索ボタンクリック処理:社員テーブルから1レコード選択
    '------------------------------------------------------------
    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.LblSyainSimei.Text = CStr(dt.Rows(0).Item(1))
                Me.LblSyainKana.Text = CStr(dt.Rows(0).Item(2))
                ' 削除画面設定
                Me.DeleteForm()
            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

    '------------------------------------------------------------
    ' 削除ボタンクリック処理:社員テーブルから1レコード削除
    '------------------------------------------------------------
    Private Sub BtnDelete_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles BtnDelete.Click

        Dim retBool As Boolean

        Try
            ' 社員マスターから1レコードを削除
            retBool = dbIO.DeleteSyain()
            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 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.LblSyainKana.Text = ""
        Me.LblSyainSimei.Text = ""
        ' 社員コードにフォーカス
        Me.TxtSyainCode.Focus()
        ' 削除ボタン不活性化
        Me.BtnDelete.Enabled = False

    End Sub

    '------------------------------------------------------------
    ' 削除画面設定
    '------------------------------------------------------------
    Private Sub DeleteForm()

        ' 削除ボタン活性化
        Me.BtnDelete.Enabled = True
        ' 削除ボタンにフォーカス
        Me.BtnDelete.Focus()

    End Sub

End Class