バックナンバー:VB.NETデータベースプログラミング
ADO.NETの基本的なプログラミングを中心に、すぐ使えるサンプルプログラム満載です。
【第66号】
第66号(2008.9.30発行)
======================================================================
★★ -- VB.NETデータベースプログラミング奮闘記 -- ★★
(VB 2005 Express & SQL Server 2005 Express)
----------------------------------------------------------------------
いつもご購読ありがとうございます。ADO.NETの基本的なプログラミングを中
心に掲載します。今後ともよろしくお願い申し上げます。
すぐ使えるADO.NET --> http://park5.wakwak.com/‾weblab/
----------------------------------------------------------------------
[やさしいVB2008 ADO.NET]を、新規に開設しました。内容はまだまだですが、
こちらもよろしくお願い致します。
やさしいVB2008 ADO.NET --> https://adonetvb.com/
======================================================================
■■ 社員テーブルを更新する 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 TxtShainShimei
┃┌―――――┐ ┌――――――――┐
┃│社員氏名 │ │ │
┃└―――――┘ └――――――――┘
┃ Label3 TxtShainKana
┃┌―――――┐ ┌――――――――――――――┐
┃│社員カナ │ │ │
┃└―――――┘ └――――――――――――――┘
┃ Label4 CboBushoMei
┃┌―――――┐ ┌―――――――――┬―┐
┃│部署 │ │ │▼│
┃└―――――┘ └―――――――――┴―┘
┃ BtnUpdate BtnClear
┃┌――――┐ ┌―――――┐
┃│ 更新 │ │ クリア │
┃└――――┘ └―――――┘
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
【検索ボタンクリック処理】
入力した社員コードが、社員テーブルに存在すれば、該当レコードを表示して、
社員コードを入力不可に設定します。社員テーブルにレコードが存在しなけれ
ば、エラーメッセージを表示します。
【クリアボタンクリック処理】
社員コードと検索ボタンのEnableプロパティをTrue、他はFalseにして、入出
力項目を初期状態に戻します。
【更新ボタンクリック処理】
入力データのエラーチェックをして、エラーがなければ、該当レコードを更新
します。
----------------------------------------------------------------------
■■ 検索ボタンクリック処理 ■■
社員データは、社員コードを引数に指定して、ClsShainTableIOクラスの
GetKeyDataメソッドで取得します。
部署データは、部署コードを引数に指定して、ClsBushoTableIOクラスの
GetKeyDataメソッドで取得します。
部署コードは、コンボボックスから部署名を選択して変更するので、あらかじ
め、変更前の部署名のインデックス値を、 SelectedIndexプロパティに設定し
ます。インデックス値は、部署名を引数に指定して、FindStringメソッドで取
得できます。
Me.CboBushoMei.SelectedIndex _
= Me.CboBushoMei.FindString(CStr(dtBusho.Rows(0)("部署名")))
なお、コンボボックスのデータ連結は、ホームロード処理でしています。
また、社員コードを入力不可に、検索ボタンを無効にして、その他の入力項目
を入力可能に、ボタンを有効に設定します。
----------------------------------------------------------------------
■■ フォーム初期設定プロシジャー ClearForm ■■
社員コードを入力可能に、検索ボタンを有効にして、その他の入力項目を入力
不可に、ボタンを無効に設定します。
ここで、コンボボックスに全部署名を表示できるように、部署テーブルの全レ
コード取得します。コンボボックスに部署名を表示できるようにするために、
DisplayMemberプロパティに部署名の列名を設定します。
Me.CboBushoMei.DisplayMember = "部署名"
選択した部署名から部署コードを取得できるように、SelectdValueプロパティ
に、部署コードの列名を設定します。
Me.CboBushoMei.ValueMember = "部署コード"
コンボボックスにデータを連結するために、DataSourceプロパティに、取得し
た部署データを設定します。
Me.CboBushoMei.DataSource = dtBusho
フォームロード処理と、クリアボタンクリック処理で、ClearFormプロシージャ
を呼び出します。
--【プログラムソースリスト(ファイル名:FormUpdate66.vb)】-----------
Public Class FormUpdate66
'----------<< 検索ボタン押下処理 >>----------
Private Sub BtnRetrieval_Click _
(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles BtnRetrieval.Click
Try
Dim shainTable As New ClsShainTableIO
Dim bushoTable As New ClsBushoTableIO
'---<< 社員テーブルのレコード取得 >>---
Dim dtShain As New DataTable
dtShain = shainTable.GetKeyData(Me.TxtShainCode.Text)
If dtShain.Rows.Count = 1 Then
'---<< レコードがあった時 >>---
Me.TxtShainShimei.Text = CStr(dtShain.Rows(0)("社員氏名"))
Me.TxtShainKana.Text = CStr(dtShain.Rows(0)("社員カナ"))
'部署名取得
Dim dtBusho As New DataTable
dtBusho = bushoTable.GetKeyData _
(CStr(dtShain.Rows(0)("部署コード")))
'取得した部署名にインデックスを設定
Me.CboBushoMei.SelectedIndex _
= Me.CboBushoMei.FindString(CStr(dtBusho.Rows(0)("部署名")))
'社員コード・検索ボタン入力不可
Me.TxtShainCode.Enabled = False
Me.BtnRetrieval.Enabled = False
Me.TxtShainShimei.Enabled = True
Me.TxtShainKana.Enabled = True
Me.CboBushoMei.Enabled = True
Me.BtnUpdate.Enabled = True
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 FormUpdate66_Load _
(ByVal sender As System.Object, ByVal e As System.EventArgs) _
Handles MyBase.Load
'フォーム初期設定
Me.ClearForm()
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.TxtShainShimei.Text = Nothing
Me.TxtShainKana.Text = Nothing
'---<< コンボボックスに全部署名を表示 >>---
Dim bushoTable As New ClsBushoTableIO
Dim dtBusho As New DataTable
'部署テーブルの全レコード取得
dtBusho = bushoTable.GetAllData _
(New String() {"部署コード", "部署名"}, "部署コード", True)
'コンボボックスに部署名を表示できるようにする
Me.CboBushoMei.DisplayMember = "部署名"
'部署コードをSelectdValueで取得できるようにする
Me.CboBushoMei.ValueMember = "部署コード"
'コンボボックスにデータを連結する
Me.CboBushoMei.DataSource = dtBusho
'社員コード・検索ボタン入力可
Me.TxtShainCode.Enabled = True
Me.BtnRetrieval.Enabled = True
Me.TxtShainShimei.Enabled = False
Me.TxtShainKana.Enabled = False
Me.CboBushoMei.Enabled = False
Me.BtnUpdate.Enabled = False
'社員コードにフォーカス
Me.TxtShainCode.Focus()
End Sub
End Class
----------------------------------------------------------------------
次号は、更新ボタンクリック処理とテーブル更新メソッドの予定です。
======================================================================
VB.NET データベースプログラミング奮闘記
発行者:ウェブ実験室(adonet‾live.jp ‾はあっとマーク)
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.