バックナンバー: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.