得意先マスター更新画面
得意先マスターの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