レコードを取得する関数作成

Visual Basic ADO.NET [Community Express]

商品マスターのレコードを取得するオリジナル関数

主キーコードを引数に指定して、マスターテーブルから引数に指定したレコードを取得する関数を作成します。

オリジナル関数サンプルプログラム

商品検索画面

マスターテーブル検索で作成したプログラムを修正して、商品マスターテーブルからレコードを取得する部分をオリジナルの関数に改造します。

商品マスターテーブルからキー値(商品コード)のレコードを取得するために、引数として商品コードを指定する関数にします。

返値は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