バックナンバー:VB.NETデータベースプログラミング
独自のデータアクセスクラスに削除メソッドを追加して、キー値のレコードを削除する。
Привітання з Днем народження Другу.
【第63号】
第63号(2008.5.14発行) ====================================================================== ★★ -- VB.NETデータベースプログラミング奮闘記 -- ★★ (VB 2005 Express & SQL Server 2005 Express) ---------------------------------------------------------------------- いつもご購読ありがとうございます。ADO.NETの基本的なプログラミングを中 心に掲載します。今後ともよろしくお願い申し上げます。 すぐ使えるADO.NET --> http://park5.wakwak.com/‾weblab/ ====================================================================== ■■ 社員テーブルから削除する 1 ■■ 社員コードを入力して、削除ボタンをクリックすると、入力した社員コードの エラーチェックをし、エラーが無ければ、社員テーブルから該当するレコード を削除します。 【sampleデータベースの社員テーブル】 ---------------------------------------------------------------------- key 列 名 データ型 nullを許容 備 考 ---------------------------------------------------------------------- ○ 社員コード nchar(5) 許容しない 英数字のみ − 社員氏名 nvarchar(20) 許容しない − 社員カナ nvarchar(40) 許容しない − 部署コード nchar(4) 許容しない − 更新日時 datetime 許容しない ---------------------------------------------------------------------- 【sampleデータベースの部署テーブル】 ---------------------------------------------------------------------- key 列 名 データ型 nullを許容 備 考 ---------------------------------------------------------------------- ○ 部署コード nchar(4) 許容しない 英数字のみ − 部署名 nvarchar(20) 許容しない − 更新日時 datetime 許容しない ---------------------------------------------------------------------- ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ 社員テーブル削除 _□×┃ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ Label1 TxtShainCode BtnRetrieval ┃┌―――――┐ ┌―――――┐ ┌――――┐ ┃│社員コード│ │ │ │ 検索 │ ┃└―――――┘ └―――――┘ └――――┘ ┃ Label2 LblShainShimei ┃┌―――――┐ ┌――――――――┐ ┃│社員氏名 │ │ │ ┃└―――――┘ └――――――――┘ ┃ Label3 LblShainKana ┃┌―――――┐ ┌――――――――――――――┐ ┃│社員カナ │ │ │ ┃└―――――┘ └――――――――――――――┘ ┃ Label4 LblBushoMei ┃┌―――――┐ ┌――――――┐ ┃│部署 │ │ │ ┃└―――――┘ └――――――┘ ┃ BtnDelete BtnClear ┃┌――――┐ ┌―――――┐ ┃│ 削除 │ │ クリア │ ┃└――――┘ └―――――┘ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ 【検索ボタンクリック処理】 入力した社員コードが、社員テーブルに存在すれば、該当レコードを表示して、 社員コードを入力不可に設定します。社員テーブルに存在しなければ、エラー メッセージを表示します。 【削除ボタンクリック処理】 該当レコードを社員テーブルから削除します。 【クリアボタンクリック処理】 表示データを初期状態に戻します。 ---------------------------------------------------------------------- ■■ 検索ボタンクリック処理 ■■ 部署名の表示は、部署コードをキーにして、部署テーブルから部署名を取得し ています。そのために、ClsBushoTableIOクラスにGetKeyDataメソッドを実装 します。 Dim bushoTable As New ClsBushoTableIO Dim dtBusho As New DataTable dtBusho = bushoTable.GetKeyData(CStr(dt.Rows(0)("部署コード"))) Me.LblBushoMei.Text = CStr(dtBusho.Rows(0)("部署名")) また、社員コードは入力不可にしているのは、検索ボタンクリック後に、社員 コードを変更できないようにするためです。 --【プログラムソースリスト(ファイル名:FormDelete63.vb)】----------- Public Class FormDelete63 '----------<< 検索ボタン押下処理 >>---------- Private Sub BtnRetrieval_Click _ (ByVal sender As System.Object, ByVal e As System.EventArgs) _ Handles BtnRetrieval.Click Dim shainTable As New ClsShainTableIO Dim bushoTable As New ClsBushoTableIO Dim dt As New DataTable Try dt = shainTable.GetKeyData(Me.TxtShainCode.Text) If dt.Rows.Count = 1 Then '-----< レコードがあった時 >----- Me.LblShainShimei.Text = CStr(dt.Rows(0)("社員氏名")) Me.LblShainKana.Text = CStr(dt.Rows(0)("社員カナ")) '部署名取得 Dim dtBusho As New DataTable dtBusho = bushoTable.GetKeyData(CStr(dt.Rows(0)("部署コード"))) Me.LblBushoMei.Text = CStr(dtBusho.Rows(0)("部署名")) '社員コード入力不可 Me.TxtShainCode.Enabled = False Else '-----< レコードが無い時 >----- MessageBox.Show _ ("入力した社員コードのデータがありません", "入力エラー") End If Catch ex As myDBIOException 'DBIO独自例外発生時 MessageBox.Show(ex.Message, "エラー発生") 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 'フォーム初期化 Me.ClearForm() End Sub '----------<< フォーム初期化 >>---------- Private Sub ClearForm() Me.TxtShainCode.Text = Nothing Me.LblShainShimei.Text = Nothing Me.LblShainKana.Text = Nothing Me.LblBushoMei.Text = Nothing '社員コード入力可能 Me.TxtShainCode.ReadOnly = False Me.TxtShainCode.TabStop = True '社員コードにフォーカス Me.TxtShainCode.Focus() End Sub End Class ---------------------------------------------------------------------- ■■ ClsBushoTableIOクラスのGetKeyDataメソッド ■■ 引数の部署コードのチェックが異なるだけで、58号で作成したClsShainTableIO クラスのGetKeyDataメソッドとまったく同様になります。 派生クラスClsBushoTableIOでは、引数のエラーチェックをして、基本クラス のGetKeyDataメソッドを呼び出します。 基本クラスにGetKeyDataメソッドがあるので、派生クラスのGetKeyDataメソッ ドでは、Overloadsキーワードを付ける必要があります。 派生クラスのGetKeyDataメソッドで、引数のエラーチェック処理を、基本クラ スのGetKeyDataメソッドで、部署テーブルからレコードを取得する処理を実装 します。 GetKeyDataメソッドを、ClsBushoTableIO.vbファイルに追加します。 --【プログラムソースリスト】------------------------------------------ '******************************************************************* ' 機能:引数にした部署コードのレコードを部署テーブルから取得する ' 引数:ByVal 部署コード(String型) ' 戻値:引数に指定した部署コードのレコード(DataTble型) '******1*********2*********3*********4*********5**********6********* Public Overloads _ Function GetKeyData(ByVal KeyCode As String) As DataTable Dim RetDataTable As New DataTable() 'リターン値 Try '引数Nothing(未設定)・空白チェック If KeyCode Is Nothing Or KeyCode = "" Then Throw New myDBIOException("エラー:部署コードが未設定") End If '引数の前後の空白は除去する KeyCode = KeyCode.Trim() 'キー値文字チェック(キー値は英数字のみで構成されている) If Not Regex.IsMatch(KeyCode, "^[0-9a-zA-Z]+$") Then '英数字以外はエラー Throw New myDBIOException _ ("エラー:部署コードに不正な文字あり") End If 'キー値長さチェック(部署コードは4桁) If Not KeyCode.Length = 4 Then '4桁以外はエラー Throw New myDBIOException _ ("エラー:部署コードの桁数が正しくない") End If '部署テーブルから引数コードのレコードを取得する RetDataTable = _ MyBase.GetKeyData("部署テーブル", "部署コード", KeyCode) Catch ex As myDBIOException Throw New myDBIOException(ex.Message) Catch ex As Exception Throw New Exception _ ("ClsBushoTableIOのGetKeyDataで例外発生:" & ex.ToString) End Try '◆戻値を設定してリターン Return RetDataTable End Function ---------------------------------------------------------------------- 次号では、削除ボタンクリック処理などを作成します。 ====================================================================== VB.NET データベースプログラミング奮闘記 発行者:ウェブ実験室([email protected]) http://park5.wakwak.com/‾weblab/ ---------------------------------------------------------------------- このメールマガジン(マガジンID: 0000128094)は、 インターネットの本屋さん『まぐまぐ』から配信されています。 http://www.mag2.com/ 【購読中止の方法】購読の中止は次のホームページからお願い致します。 http://park5.wakwak.com/‾weblab/ http://www.mag2.com/m/0000128094.htm ---------------------------------------------------------------------- このメールマガジン及び「すぐ使えるADO.NET」ホームページで公開している ソースプログラム・データの利用により生じた損害等については、発行者は 一切責任を負いません。ソースプログラムの再利用は自由です。著作権は発行 者が所有します。 このメールマガジン及び「すぐ使えるADO.NET」ホームページに掲載されてい る会社名・製品名等は、各社の登録商標または商標です。 ======================================================================
▲このページ先頭へ | すぐ使えるADO.NET ホームへ
Copyright© すぐ使えるADO.NET. All rights reserved.