バックナンバー:VB.NETデータベースプログラミング
ADO.NETの基本的なプログラミングを中心に、すぐ使えるサンプルプログラム満載です。
【第71号】
第71号(2009.3.27発行) ==================================================================== ★★ -- VB.NETデータベースプログラミング奮闘記 -- ★★ (VB 2008 Express & SQL Server 2005 Express) -------------------------------------------------------------------- いつもご購読ありがとうございます。ADO.NETの基本的なプログラミングを 中心に掲載します。今後ともよろしくお願い申し上げます。 すぐ使えるADO.NET --> http://park5.wakwak.com/‾weblab/ -------------------------------------------------------------------- 【お知らせ】 マスター保守修正版が完了したら、注文伝票入力を始めます。注文伝票入力 では、ヘッダーとデータグリッドビューを使った明細行の入力、注文テーブ ル(ヘッダーデータ)と注文明細テーブルへの登録などを予定しています。 ==================================================================== ■■ マスターテーブル保守改良版 テーブル更新 ■■ マスター保守のプログラムは完成しましたが、現在見直し中です。今回は、 見直しが終わったマスターテーブル更新【修正版】の、ソースリストを掲載 します。 主な修正点は、テーブル追加と同様に、フォームクラスでの開発負担を軽減 するために、フォームクラスから、テーブルアクセスクラスのメンバーを呼 び出さないで済むようにした点です。 お手数ですが、下記のソースリストと置き換えをお願いします。 -------------------------------------------------------------------- ■■ 社員テーブルを更新する ■■ 検索ボタンをクリックすると、入力した社員コードのエラーチェックをして、 エラーが無ければ、社員テーブルから該当レコードを取得し、社員氏名と社 員カナを表示します。 更新ボタンをクリックすると、変更した社員氏名と社員カナのエラーチェッ クをして、エラーが無ければ、社員テーブルの該当レコードを更新します。 クリアボタンをクリックすると、社員コードと検索ボタンのEnableプロパ ティをTrue、他はFalseにして、入出力項目を初期状態に戻します。 【社員テーブル】 --------------------------------------------- key 列 名 データ型 nullを許容 --------------------------------------------- ○ 社員コード nchar(5) 許容しない − 社員氏名 nvarchar(20) 許容しない − 社員カナ nvarchar(40) 許容しない − 更新日時 datetime 許容しない --------------------------------------------- ◆新規にプロジェクトを作成して、フォームに下記のコントロールを貼り付 けてください。 ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ 社員テーブル更新 _□×┃ ┣━━━━━━━━━━━━━━━━━━━━━━━━━━━┫ ┃ Label1 TxtShainCode BtnRetrieval ┃┌―――――┐ ┌―――――┐ ┌――――┐ ┃│社員コード│ │ │ │ 検索 │ ┃└―――――┘ └―――――┘ └――――┘ ┃ Label2 TxtShainShimei ┃┌―――――┐ ┌――――――――┐ ┃│社員氏名 │ │ │ ┃└―――――┘ └――――――――┘ ┃ Label3 TxtShainKana ┃┌―――――┐ ┌――――――――――――――┐ ┃│社員カナ │ │ │ ┃└―――――┘ └――――――――――――――┘ ┃ Label4 CboBushoMei ┃┌―――――┐ ┌―――――――――┬―┐ ┃│部署 │ │ │▼│ ┃└―――――┘ └―――――――――┴―┘ ┃ BtnUpdate BtnClear ┃┌――――┐ ┌―――――┐ ┃│ 更新 │ │ クリア │ ┃└――――┘ └―――――┘ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━┛ 接続文字列は、app.configに登録しておきます。 <connectionStrings> <add name="AdoNet.My.MySettings.sampleDBConStr" .......... /> </connectionStrings> ==================================================================== 【画面クラスの主な改良修正点】 画面クラスからは、社員テーブルアクセスクラスのメンバーを呼び出さない ように修正しました。 --【プログラムソースリスト(FormUpdate.vb)】----------------------- '////////// 社員テーブル更新画面クラス ////////// Option Strict On Public Class FormUpdate Private shain As ClsUpdateShain Private busho As ClsSelectBusho '----------<< フォームロード処理 >>---------- Private Sub FormUpdate_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Mybase.Load ' 画面初期設定 Me.ClearForm() End Sub '----------<< 検索ボタン押下処理 >>---------- Private Sub BtnRetrieval_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles BtnRetrieval.Click Try ' 社員データ更新クラスのインスタンス生成 Me.shain = New ClsUpdateShain(Me.TxtShainCode.Text) Me.TxtShainShimei.Text = Me.shain.ShainShimei Me.TxtShainKana.Text = Me.shain.ShainKana ' 部署データ選択クラスのインスタンス生成 Me.busho = New ClsSelectBusho(Me.shain.BushoCode) ' 取得した部署名にインデックスを設定 Me.CboBushoMei.SelectedIndex _ = Me.CboBushoMei.FindString(Me.busho.BushoMei) ' 社員コード・検索ボタン入力不可 Me.TxtShainCode.Enabled = False Me.BtnRetrieval.Enabled = False Me.TxtShainShimei.Enabled = True Me.TxtShainKana.Enabled = True Me.CboBushoMei.Enabled = True Me.BtnRetrieval.Enabled = False Me.BtnUpdate.Enabled = True ' 社員氏名にフォーカス Me.TxtShainShimei.Focus() Catch ex As myShainCodeException ' 社員コードエラー MessageBox.Show(ex.Message, "社員コードエラー") Me.TxtShainCode.Focus() Catch ex As myDBIOException ' DBアクセスクラス独自例外発生時 MessageBox.Show(ex.Message, "DBIO例外発生") Catch ex As Exception ' その他例外発生時 MessageBox.Show(ex.ToString, "例外発生") End Try End Sub '----------<< 更新ボタン押下処理 >>---------- Private Sub BtnUpdate_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles BtnUpdate.Click Try ' 社員テーブルのデータ行生成 Dim row As DataRow row = shain.CreateDataRow() ' 画面データのセット row("社員コード") = Me.TxtShainCode.Text row("社員氏名") = Me.TxtShainShimei.Text row("社員カナ") = Me.TxtShainKana.Text row("部署コード") = CStr(Me.CboBushoMei.SelectedValue) ' 社員テーブルの更新処理 shain.UpdateKeyRecord(row) ' 画面初期設定 Me.ClearForm() ' 社員コードにフォーカス Me.TxtShainCode.Focus() ' 正常終了 MessageBox.Show("正常に更新されました", "更新処理") Catch ex As myShainShimeiException ' 社員氏名エラー MessageBox.Show(ex.Message, "社員氏名エラー") Me.TxtShainShimei.Focus() Catch ex As myShainKanaException ' 社員カナエラー MessageBox.Show(ex.Message, "社員カナエラー") Me.TxtShainKana.Focus() Catch ex As myBushoCodeException ' 部署コードエラー MessageBox.Show(ex.Message, "部署コードエラー") Me.CboBushoMei.Focus() Catch ex As myDBIOException ' DBアクセスクラス独自例外発生時 MessageBox.Show(ex.Message, "DBアクセスエラー") 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() ' 社員コードにフォーカス Me.TxtShainCode.Focus() End Sub '----------<< 画面初期設定 >>---------- Private Sub ClearForm() Me.TxtShainCode.Text = Nothing Me.TxtShainShimei.Text = Nothing Me.TxtShainKana.Text = Nothing ' 部署テーブルの全レコード取得 Me.busho = New ClsSelectbusho() ' コンボボックスに部署名を表示できるようにする Me.CboBushoMei.DisplayMember = "部署名" ' 部署コードをSelectdValueで取得できるようにする Me.CboBushoMei.ValueMember = "部署コード" ' コンボボックスにデータを連結する Me.CboBushoMei.DataSource = Me.busho.BushoData ' 社員コード・検索ボタン入力不可 Me.TxtShainCode.Enabled = True Me.BtnRetrieval.Enabled = True Me.TxtShainShimei.Enabled = False Me.TxtShainKana.Enabled = False Me.CboBushoMei.Enabled = False Me.BtnRetrieval.Enabled = True Me.BtnUpdate.Enabled = False End Sub End Class ==================================================================== 【社員データ基本クラス】 【社員データ選択更新削除クラス】 前号(71号)に掲載しました。そちらを参考にしてください。 ==================================================================== 【社員データ更新クラスの主な改良修正点】 社員データ選択更新削除クラスで、コンストラクタの引数に社員コードを指 定するように変更したため、社員データ更新クラスのコンストラクタも、引 数に社員コードを指定します。 --【プログラムソースリスト(ClsShain.vb)】------------------------- '////////// 派生クラス:社員データ更新クラス ////////// Public Class ClsUpdateShain Inherits ClsShainSub '======================================================== ' 機能:コンストラクタ ' 引数:社員コード '======================================================== Public Sub New(ByVal shainCode As String) MyBase.New(shainCode) End Sub '******************************************************** ' 機能:社員テーブルの1レコードを更新するメソッド ' 引数:更新する行データ ' 戻値:更新したレコード数 '****1*********2*********3*********4*********5**********6 Public Function _ UpdateKeyRecord(ByVal shain As DataRow) As Integer Dim retUpdateCount As Integer ' リターン値 Dim dbIO As New ClsShainTableIO() ' エラーチェックとデータセット MyBase.ShainShimei = CStr(shain("社員氏名")) MyBase.ShainKana = CStr(shain("社員カナ")) MyBase.BushoCode = CStr(shain("部署コード")) ' レコードの更新 retUpdateCount = dbIO.UpdateKeyRecord(Me) Return retUpdateCount End Function End Class ==================================================================== 【sampleDBアクセスクラスの改良修正点】 Try … Catch … End Try をはずして、エラー発生時はそのまま例外をス ローするように修正しました。 --【プログラムソースリスト(ClsSampleDBIO.vb)】-------------------- Option Strict On Imports System.Configuration ' [参照の更新]から更新 Imports System.Data.SqlClient Imports System.Transactions ' [参照の更新]から更新 '////////// 基本クラス:sampleDBアクセスクラス ////////// Public MustInherit Class ClsSampleDBIO '========================================================== ' 機能:コンストラクタ ' 引数:なし '========================================================== Public Sub New() MyBase.New() End Sub '********************************************************** ' 機能:テーブルキー値のレコードの有無を調べるメソッド ' 引数:テーブル名 ' 引数:キーフィールド名 ' 引数:主キー値 ' 戻値:レコードあり-->True、レコードなし-->False ' 補足:主キーフィールドはNChar型とする '******1*********2*********3*********4*********5**********6 Public Function ExistKeyData(ByVal tableName As String, _ ByVal keyField As String, _ ByVal keyCode As String) _ As Boolean Dim retExist As Boolean ' リターン値 Using con As New SqlConnection Using cmd As New SqlCommand ' 接続関連プロパティ設定 Me.SetConnection(con, cmd) ' SQL文設定 cmd.CommandText = "SELECT COUNT(*) FROM " & _ tableName & _ " WHERE " & keyField & " = @KeyCode" ' SQL文の引数設定 cmd.Parameters.Clear() ' パラメータの実際のサイズからデータ長を推論 cmd.Parameters.Add("@KeyCode", SqlDbType.NChar) ' コマンド引数に値を設定 cmd.Parameters("@KeyCode").Value = keyCode ' DB接続を開く con.Open() ' レコード件数取得 Dim count As Integer = CInt(cmd.ExecuteScalar()) If count = 1 Then ' レコードが1件あれば、Trueを返す retExist = True Else ' そうでなければ、Falseを返す retExist = False End If End Using End Using ' ◆戻値を設定してリターン Return retExist End Function '********************************************************** ' 機能:引数に指定したテーブルのキー値のレコードを取得する ' 引数:テーブル名 ' 引数:キーフィールド名 ' 引数:主キー値 ' 戻値:取得したレコード ' 補足:テーブル名の主キーフィールドはNChar型とする '******1*********2*********3*********4*********5**********6 Public Function GetKeyData(ByVal tableName As String, _ ByVal keyField As String, _ ByVal keyCode As String) _ As DataTable Dim retDt As New DataTable 'リターン値 '----------<< テーブルからレコード取得 >>---------- Using con As New SqlConnection Using cmd As New SqlCommand ' 接続関連プロパティ設定 Me.SetConnection(con, cmd) ' SQL文設定 cmd.CommandText = "SELECT * FROM " & _ tableName & _ " WHERE " & keyField & " = @keyCode" ' SQL文の引数設定 cmd.Parameters.Clear() ' パラメータの実際のサイズからデータ長を推論 cmd.Parameters.Add("@keyCode", SqlDbType.NChar) ' コマンド引数に値を設定 cmd.Parameters("@KeyCode").Value = keyCode ' レコード取得 Dim da As New SqlDataAdapter da.SelectCommand = cmd da.Fill(retDt) End Using End Using ' ◆戻値を設定してリターン Return retDt End Function '********************************************************** ' 機能:社員テーブルの行データ生成 ' 引数:テーブル名 ' 引数:キーフィールド名 ' 戻値:生成した行データ '******1*********2*********3*********4*********5**********6 Public Function CreateDataRow(ByVal tableName As String, _ ByVal keyField As String) _ As DataRow Dim retRow As DataRow ' リターン値 Dim dt As New DataTable ' 列情報を取込むために、レコードを取得するが ' 取得できなくてもよいので、第三引数のキー値は何でも良い dt = Me.GetKeyData(tableName, keyField, "_") retRow = dt.NewRow Return retRow End Function '********************************************************** ' 機能:接続関連プロパティ設定 ' 引数:参照 SqlConnectionオブジェクト ' 引数:参照 SqlCommandオブジェクト ' 戻値:なし '******1*********2*********3*********4*********5**********6 Public Sub SetConnection(ByRef con As SqlConnection, _ ByRef cmd As SqlCommand) Dim settings As ConnectionStringSettings ' 接続文字列をapp.configファイルから取得 settings = _ ConfigurationManager.ConnectionStrings _ ("AdoNet.My.MySettings.sampleDBConStr") If settings Is Nothing Then ' 接続文字列取得エラー Throw New Exception _ ("接続文字列がapp.configに未登録") Else ' 接続文字列の設定 con.ConnectionString = settings.ConnectionString ' SqlCommand.Connectionプロパティの設定 cmd.Connection = con End If End Sub End Class ==================================================================== 【社員テーブルアクセスクラスの改良修正点】 このクラスも、Try … Catch … End Try をはずして、エラー発生時はそ のまま例外をスローするように修正しました。 --【プログラムソースリスト(ClsShainTableIO.vb)】------------------ Option Strict On Imports System.Data.SqlClient Imports System.Text.RegularExpressions Imports System.Transactions ' [参照の追加]で追加 Public Class ClsShainTableIO Inherits ClsSampleDBIO '========================================================== ' 機能:コンストラクタ ' 引数:なし '========================================================== Public Sub New() MyBase.New() End Sub '********************************************************** ' 機能:引数のレコードを社員テーブルから取得する ' 引数:社員コード ' 戻値:引数に指定した社員コードのレコード '******1*********2*********3*********4*********5**********6 Public Overloads Function _ GetKeyData(ByVal shainCode As String) As DataTable Dim retDt As New DataTable ' リターン値 ' 引数の空文字列チェック If shainCode.Length = 0 Then Throw New myShainCodeException _ ("社員コードが未入力") End If ' キー値文字チェック(キー値は数字のみで構成されている) If Not Regex.IsMatch(shainCode, "^[0-9]+$") Then ' 数字以外はエラー Throw New myShainCodeException _ ("社員コードに数字以外の文字があります") End If ' キー値長さチェック(社員コードは5桁) If Not shainCode.Length = 5 Then ' 5桁以外はエラー Throw New myShainCodeException _ ("社員コードの桁数が正しくない") End If ' 社員テーブルから引数コードのレコードを取得する retDt = _ MyBase.GetKeyData("社員テーブル", "社員コード", shainCode) ' ◆戻値を設定してリターン Return retDt End Function '********************************************************** ' 機能:社員テーブルの1レコードを更新するメソッド ' 引数:ClsUpdateShainオブジェクト ' 戻値:更新したレコード数 '******1*********2*********3*********4*********5**********6 Public Function UpdateKeyRecord( _ ByVal shain As ClsUpdateShain) As Integer Dim retUpdateCount As Integer ' リターン値 ' トランザクション開始 Using tran As New TransactionScope Using con As New SqlConnection Using cmd As New SqlCommand ' 接続関連プロパティ設定 MyBase.SetConnection(con, cmd) ' SQL文の作成 cmd.CommandText = _ "UPDATE 社員テーブル " & _ "SET 社員氏名 = @shimei, 社員カナ = @kana, " & _ "部署コード = @bCode, 更新日時 = @newDate " & _ "WHERE 社員コード = @sCode AND 更新日時 = @date" ' SQL文引数に値を設定 cmd.Parameters.Clear() cmd.Parameters.Add("@sCode", SqlDbType.NChar, 5) cmd.Parameters.Add("@shimei", SqlDbType.NVarChar, 20) cmd.Parameters.Add("@kana", SqlDbType.NVarChar, 40) cmd.Parameters.Add("@bCode", SqlDbType.NChar, 4) cmd.Parameters.Add("@newDate", SqlDbType.DateTime) cmd.Parameters.Add("@date", SqlDbType.DateTime) cmd.Parameters("@sCode").Value = shain.ShainCode cmd.Parameters("@shimei").Value = shain.ShainShimei cmd.Parameters("@kana").Value = shain.ShainKana cmd.Parameters("@bCode").Value = shain.BushoCode cmd.Parameters("@newDate").Value = dateTime.Now cmd.Parameters("@date").Value = Shain.KoushinNichiji ' DB接続を開く con.Open() ' テーブルの更新を実行 retUpdateCount = cmd.ExecuteNonQuery() End Using End Using ' 1レコード更新なら正常(通常これしかありえない) If retUpdateCount = 1 Then ' トランザクション完了(コミット) tran.Complete() Else ' 1レコード更新以外なら例外をスロー ' コミットしなければ、自動的にロールバックされる Throw New myDBIOException _ ("ClsShainTableIO.UpdateKeyRecord:例外発生") End If End Using ' ◆戻値を設定してリターン Return retUpdateCount End Function End Class ==================================================================== 【部署テーブルアクセスクラスの追加】 部署テーブルアクセスクラスを新規に作成しました。 --【プログラムソースリスト(ClsBushoTableIO.vb)】------------------ Option Strict On Imports System.Data.SqlClient Imports System.Text.RegularExpressions Imports System.Transactions ' [参照の追加]で追加 '////////// 派生クラス:部署テーブルアクセスクラス ////////// Public Class ClsBushoTableIO Inherits ClsSampleDBIO '========================================================== ' 機能:コンストラクタ ' 引数:なし '========================================================== Public Sub New() MyBase.New() End Sub '********************************************************** ' 機能:キー値のレコードの有無を調べるメソッド ' 引数:部署コード ' 戻値:レコードあり-->True、レコードなし-->False ' 補足:主キーフィールドはNChar型とする '******1*********2*********3*********4*********5**********6 Public Overloads Function _ ExistKeyData(ByVal bushoCode As String) As Boolean Dim retExist As Boolean ' リターン値 ' 引数の空文字列チェック If bushoCode.Length = 0 Then Throw New myBushoCodeException _ ("部署コードが未入力です") End If ' キー値文字チェック(キー値は数字のみで構成されている) If Not Regex.IsMatch(bushoCode, "^[0-9]+$") Then ' 数字以外はエラー Throw New myBushoCodeException _ ("部署コードに数字以外の文字があります") End If ' キー値長さチェック(部署コードは4桁) If Not bushoCode.Length = 4 Then ' 4桁以外はエラー Throw New myBushoCodeException _ ("部署コードの桁数が正しくない") End If ' 引数のレコードの有無をチェックする retExist = MyBase.ExistKeyData _ ("部署テーブル", "部署コード", bushoCode) ' ◆戻値を設定してリターン Return retExist End Function '********************************************************** ' 機能:引数のレコードを部署テーブルから取得する ' 引数:部署コード ' 戻値:引数に指定した部署コードのレコード(DataTble型) ' 補足:主キーフィールドはNChar型とする '******1*********2*********3*********4*********5**********6 Public Overloads Function _ GetKeyData(ByVal bushoCode As String) As DataTable Dim retDt As New DataTable ' リターン値 ' 引数の空文字列チェック If bushoCode.Length = 0 Then Throw New mybushoCodeException _ ("部署コードが未入力") End If ' キー値文字チェック(キー値は数字のみで構成されている) If Not Regex.IsMatch(bushoCode, "^[0-9]+$") Then ' 数字以外はエラー Throw New mybushoCodeException _ ("部署コードに数字以外の文字があります") End If ' キー値長さチェック(部署コードは4桁) If Not bushoCode.Length = 4 Then ' 4桁以外はエラー Throw New mybushoCodeException _ ("部署コードの桁数が正しくない") End If ' 部署テーブルから引数コードのレコードを取得する retDt = MyBase.GetKeyData _ ("部署テーブル", "部署コード", bushoCode) ' ◆戻値を設定してリターン Return retDt End Function End Class ==================================================================== 【部署データ管理クラスの追加】 部署データ管理クラスを新規に作成しました。 --【プログラムソースリスト(ClsBusho.vb)】------------------ Option Strict On Imports System.Text.RegularExpressions '////////// 基本クラス:部署データクラス ////////// Public MustInherit Class ClsBushoBase '----------<< メンバ:変数 >>---------- Protected bushoCodeValue As String Private bushoMeiValue As String Protected koushinNichijiValue As DateTime '======================================================== ' 機能:コンストラクタ ' 引数:なし '======================================================== Protected Sub New() MyBase.New() ' 基本クラスのコンストラクタを呼び出す End Sub '-------------------------------------------------------- ' プロパティ:部署名 '-------------------------------------------------------- Public Property BushoMei() As String ' Getプロパティ Get Return bushoMeiValue End Get ' Setプロパティ Set(ByVal value As String) ' 【エラーチェック】 If value.Length = 0 Then ' 未入力はエラー Throw New myBushoMeiException _ ("部署名を入力してください") Else BushoMeiValue = value End If End Set End Property '-------------------------------------------------------- ' プロパティ:更新日時 '-------------------------------------------------------- Public ReadOnly Property KoushinNichiji() As DateTime ' Getプロパティ Get Return koushinNichijiValue End Get End Property End Class '//////// 派生抽象クラス:部署データ選択更新削除クラス //////// Public MustInherit Class ClsBushoSub Inherits ClsBushoBase '======================================================= ' 機能:コンストラクタ ' 引数:なし '======================================================= Protected Sub New() MyBase.New() ' 基本クラスのコンストラクタを呼び出す End Sub '======================================================= ' 機能:コンストラクタ ' 引数:部署コード '======================================================= Protected Sub New(ByVal bushoCode As String) MyBase.New() ' 基本クラスのコンストラクタを呼び出す ' ---<< 部署テーブルからレコード取得 >>--- Dim bushoTable As New ClsBushoTableIO Dim dt As DataTable ' レコード取得メソッド呼出 dt = bushoTable.GetKeyData(bushoCode) If dt.Rows.Count = 1 Then ' レコードがあった時 MyBase.BushoCodeValue = bushoCode MyBase.BushoMei = CStr(dt.Rows(0)("部署名")) MyBase.KoushinNichijiValue = _ CDate(dt.Rows(0)("更新日時")) Else ' レコードが無かった時 Throw New myBushoCodeException _ ("部署テーブルにレコードがありません") End If End Sub '-------------------------------------------------------- ' プロパティ:部署コード '-------------------------------------------------------- Public ReadOnly Property BushoCode() As String ' Getプロパティ Get Return bushoCodeValue End Get End Property End Class '//////// 派生クラス:部署データ選択クラス //////// Public Class ClsSelectBusho Inherits ClsBushoSub Private bushoDataValue As DataTable '======================================================= ' 機能:コンストラクタ ' 引数:なし '======================================================= Public Sub New(ByVal bushoCode As String) MyBase.New(bushoCode) End Sub '======================================================= ' 機能:コンストラクタ ' 引数:なし '======================================================= Public Sub New() MyBase.New() ' 基本クラスのコンストラクタを呼び出す ' 部署テーブルから全レコード取得 Dim bushoTable As New ClsBushoTableIO ' レコード取得メソッド呼出 bushoDataValue = bushoTable.GetAllData( _ New String() {"部署コード", "部署名"}, _ "部署コード", True) If bushoDataValue.Rows.Count = 0 Then ' レコードが無かった時 Throw New myBushoCodeException _ ("部署テーブルにレコードがありません") End If End Sub '-------------------------------------------------------- ' プロパティ:部署全レコード '-------------------------------------------------------- Public ReadOnly Property BushoData() As DataTable ' Getプロパティ Get Return Me.bushoDataValue End Get End Property End Class -------------------------------------------------------------------- 次号は、マスター保守(社員テーブル削除)の修正版です。 ==================================================================== 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」「やさしいBV2008 ADO.NET」 などのホームページで公開しているソースプログラム・データの利用により 生じた損害等については、発行者は一切責任を負いません。ソースプログラ ムの再利用は自由です。著作権は発行者が所有します。 このメールマガジン及び「すぐ使えるADO.NET」「やさしいBV2008 ADO.NET」 などホームページに掲載されている会社名・製品名等は、各社の登録商標ま たは商標です。 ====================================================================
▲このページ先頭へ | すぐ使えるADO.NET ホームへ
Copyright© すぐ使えるADO.NET. All rights reserved.