商品マスターのレコードを取得するオリジナル関数
主キーコードを引数に指定して、マスターテーブルから引数に指定したレコードを取得する関数を作成します。
オリジナル関数サンプルプログラム
マスターテーブル検索で作成したプログラムを修正して、商品マスターテーブルからレコードを取得する部分をオリジナルの関数に改造します。
商品マスターテーブルからキー値(商品コード)のレコードを取得するために、引数として商品コードを指定する関数にします。
返値はDataTable型にして、取得したレコードの各データをセットし、レコードが取得できたか否かは、Rowプロパティでレコード数を調べます。
Option Strict On Imports System.Data.SqlClient Imports System.Configuration ' 参照の追加で System.Configurationを追加 Public Class RetrievalFuntion '------------------------------------------------------------- ' ■ 検索ボタンクリック処理 ■ '------------------------------------------------------------- Private Sub BtnRetrieval_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles BtnRetrieval.Click ' 商品コード未入力ならエラー If TxtShohinCode.Text = Nothing Then MessageBox.Show("商品コードが未入力","エラー") Exit Sub End If ' 商品マスター表からレコード取得 Try Dim dt As New DataTable dt = GetShohinMasterData(TxtShohinCode.Text) If dt.Rows.Count = 1 Then ' レコードがあった時 LblShohinMei.Text = CStr(dt.Rows(0)("商品名称")) LblHanbaiTanka.Text = CStr(dt.Rows(0)("販売単価")) Else ' レコードが無かった時 LblShohinMei.Text = Nothing LblHanbaiTanka.Text = Nothing MessageBox.Show("データがありません","エラー") End If Catch ex As Exception MessageBox.Show(ex.ToString, "【例外発生】") End Try End Sub '------------------------------------------------------------- ' ■ 商品マスター表からレコードを取得する関数 ■ '------------------------------------------------------------- Public Function GetShohinMasterData(ByVal sCode As String) As DataTable Dim retDt As New DataTable ' リターン値 ' 接続文字列をapp.configファイルから取得 Dim settings As ConnectionStringSettings settings = _ ConfigurationManager.ConnectionStrings("販売管理ConString") If settings Is Nothing Then ' 接続文字列取得エラー Throw New Exception("app.configに未登録") Exit Try End If Using con As New SqlConnection Using cmd As New SqlCommand ' 接続文字列の設定 con.ConnectionString = settings.ConnectionString ' SqlCommand.Connectionプロパティの設定 cmd.Connection = con ' SQL文設定 cmd.CommandText = "SELECT * FROM 商品マスター表 " & _ "WHERE 商品コード = @sCode" ' SQL文の引数設定 cmd.Parameters.Clear() ' パラメータの実際のサイズからデータ長を推論 cmd.Parameters.Add("@sCode",sqlDbType.NChar) cmd.Parameters("@sCode").Value = sCode ' レコード取得 Dim da As New SqlDataAdapter da.SelectCommand = cmd da.Fill(retDt) End Using End Using Return retDt ' ◆リターン End Function End Class