マスターテーブル更新画面

Visual Basic ADO.NET [Community Express]

得意先マスター更新画面

得意先マスターの1レコードを更新(Update)するプログラムを作成します。得意先検索ボタンクリック処理、住所検索ボタンクリック処理、フォーム初期設定、クリアボタンクリック処理を実装します。

仕様書

得意先マスター更新

販売管理データベース

得意先マスター表
Key 列名 データ型 NULLを許容
得意先コード nchar(4) しない
郵便番号 nchar(7) しない
得意先名称 nvarchar(40) しない
得意先住所 nvarchar(50) しない
郵便番号マスター表
Key 列名 データ型 NULLを許容
郵便番号 nchar(7) しない
都道府県名 nvarchar(4) しない
市区町村名 nvarchar(10) しない
町域名 nvarchar(20) しない

【得意先検索ボタンクリック処理】

  • 入力された得意先コードを引数に指定して、得意先データ管理クラスのインスタンスを生成
  • 得意先コードをキーにして得意先マスター表を検索し、得意先名称・都道府県・住所(町域名)を、各テキストボックスコントロールのTextプロパティにセット
  • 入力した得意先コードにエラーがあれば得意先コード例外、データベースでエラーが発生すれば、データベースIO例外がスローされるので、それぞれの例外に応じたエラー処理を実装
  • 得意先コードと得意先検索ボタンのEnableプロパティを無効に設定。その他のテキストボックス・コンボボックス・ボタンのEnableプロパティを有効に設定

得意先住所は、都道府県と市区町村と住所詳細を ","で区切って得意先マスターに保存しているので、得意先住所を取得したら、Splitメソッドで配列に取得後、都道府県コンボボックス、市区町村テキストボックス、住所詳細テキストボックスにセットします。

【住所検索ボタンクリック処理】

郵便番号をキーにして、郵便番号マスター表を検索します。該当レコードがあれば、取得したレコードの都道府県名を都道府県コンボボックスに、市区町村名と町域名を連結して市区町村テキストボックスに設定します。

住所詳細テキストボックスには何も設定しません。

従って、郵便番号を入力し、住所検索ボタンをクリックすると、該当レコードがあれば、郵便番号マスター表のデータに置き換わることになります。

サンプルプログラム

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

Option Strict On
Imports System.Data.SqlClient
Imports System.Transactions  '[参照の追加]から追加
Imports System.Text.RegularExpressions

'////////// 得意先マスター更新画面クラス //////////
Public Class FormTokuisakiKoshin

    '*******************************************************
    ' フォームロード処理
    '*******************************************************
    Private Sub FormTokuisakiKoshin_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        ' フォーム初期設定
        ClearForm()

    End Sub

    '*******************************************************
    ' 得意先検索ボタンクリック処理
    '*******************************************************
    Private Sub BtnTokuisakiKensaku_Click(sender As Object,
        e As EventArgs) Handles BtnTokuisakiKensaku.Click

        Try
            ' 郵便番号・県名・市町村名・町域名を取得し項目にセット
            Dim tokuisaki As New ClsTokuisaki(TxtTokuisakiCode.Text)
            TxtTokuisakiMei.Text = tokuisaki.TokuisakiMeisho
            TxtYubinBango.Text = tokuisaki.YubinBango
            ' 都道府県と市区町村と住所詳細は","で区切って住所に保存してある
            Dim Jusho() As String
            Jusho = tokuisaki.TokuisakiJusho.Split(","c)
            CmbTodofukenMei.Text = Jusho(0)
            TxtShikuchosonMei.Text = Jusho(1)
            TxtJusho.Text = Jusho(2)

            ' コントロールの有効・無効設定
            TxtTokuisakiCode.Enabled = False
            BtnTokuisakiKensaku.Enabled = False
            TxtTokuisakiMei.Enabled = True
            BtnJushoKensaku.Enabled = True
            TxtYubinBango.Enabled = True
            CmbTodofukenMei.Enabled = True
            TxtShikuchosonMei.Enabled = True
            TxtJusho.Enabled = True
            BtnKoshin.Enabled = True
            BtnClear.Enabled = True
            ' 得意先コードにフォーカス
            TxtTokuisakiCode.Focus()

        Catch ex As TokuisakiCodeException
            ' 得意先コードエラー処理
            MessageBox.Show(ex.Message, "得意先コードエラー")
            ' 得意先コードにフォーカス
            TxtTokuisakiCode.Focus()
        Catch ex As DBIOException
            MessageBox.Show(ex.Message, "DBIO例外発生")
        Catch ex As Exception
            ' その他例外発生時
            MessageBox.Show(ex.ToString, "例外発生")
        End Try

    End Sub

    '*******************************************************
    ' 郵便番号検索ボタンクリック処理
    '*******************************************************
    Private Sub BtnJushoKensaku_Click(sender As Object, e As EventArgs) Handles BtnJushoKensaku.Click

            ' 県名・市町村名・町域名を取得し項目にセット
            Dim yubinBango As New ClsYubinBango(TxtYubinBango.Text)
            CmbTodofukenMei.Text = yubinBango.TodofukenMei
            ' 市区町村名と町域名を連結して表示
            TxtShikuchosonMei.Text = yubinBango.ShikuchosonMei & yubinBango.ChoikiMei
            TxtJusho.Text = Nothing

        Catch ex As YubinBangoException
            ' 郵便番号エラー処理
            MessageBox.Show(ex.Message, "郵便番号エラー")
            ' 郵便番号にフォーカス
            TxtYubinBango.Focus()
        Catch ex As DBIOException
            MessageBox.Show(ex.Message, "DBIO例外発生")
        Catch ex As Exception
            ' その他例外発生時
            MessageBox.Show(ex.ToString, "例外発生")
        End Try

    End Sub

    '*******************************************************
    ' クリアボタンクリック処理
    '*******************************************************
    Private Sub BtnClear_Click(sender As Object,
          e As EventArgs) Handles BtnClear.Click

        ' フォーム初期設定
        ClearForm()

    End Sub

    '*******************************************************
    ' フォーム初期設定処理
    '*******************************************************
    Private Sub ClearForm()

        TxtTokuisakiCode.Text = Nothing
        TxtTokuisakiMei.Text = Nothing
        BtnJushoKensaku.Text = Nothing
        TxtYubinBango.Text = Nothing
        CmbTodofukenMei.Text = Nothing
        TxtShikuchosonMei.Text = Nothing
        TxtJusho.Text = Nothing

        ' コントロールの有効・無効設定
        TxtTokuisakiCode.Enabled = True
        BtnTokuisakiKensaku.Enabled = True
        TxtTokuisakiMei.Enabled = False
        BtnJushoKensaku.Enabled = False
        TxtYubinBango.Enabled = False
        CmbTodofukenMei.Enabled = False
        TxtShikuchosonMei.Enabled = False
        TxtJusho.Enabled = False
        BtnKoshin.Enabled = False
        BtnClear.Enabled = False

    End Sub

End Class