第78号(2009.11.10発行) ==================================================================== ★★ -- VB.NETデータベースプログラミング奮闘記 -- ★★ (VB 2008 Express & SQL Server 2008 Express) -------------------------------------------------------------------- いつもご購読ありがとうございます。ADO.NETの基本的なサンプルプログラ ムをお届けします。今後ともよろしくお願い申し上げます。 やさしいVB2008 ADO.NET → https://adonetvb.com/index.html ==================================================================== ■■ 受注伝票エントリー 第6回 ■■ フォームから入力した受注データを、受注ヘッダー表と受注ディテール表に 登録するプログラムを作成します。 フォーム → https://adonetvb.com/OrderEntry/index.html テーブル定義 → https://adonetvb.com/OrderEntry/DB.html バックナンバー → https://adonetvb.com/MailMagazine/index.html -------------------------------------------------------------------- ■ 受注ディテール行クラス ■ 今回は、明細1行分クラスのClsInsertDetailRowを実装します。このクラス は、明細行追加ボタンを押したときに、入力データをClsInsertDetailRowか ら明細行リストに追加し、データグリッドビューに表示できるようにするた めのクラスです。 列スタイルDataPropertyName(前号参照)に、このプロパティ名を設定する と、データグリッドビューに商品名称や受注単価等の内容を表示できるよう になります。 ClsInsertDetailRowは、基本クラス(基底クラス)ClsDetailRowBaseを継承 したクラスです。受注番号プロパティを継承クラス、その他のプロパティを 基本クラスに実装します。 ClsDetailRowBaseクラスは、 Public MustInherit Class ClsDetailRowBase と宣言して、抽象クラスとするので、インスタンスを生成できません。 ClsInsertDetailRowクラスは、 Public Class ClsInsertDetailRow Inherits ClsDetailRowBase と宣言して、基本クラスを継承します。インスタンスは、このクラスから生 成します。 商品名称・受注単価・受注金額は、データグリッドビューに表示するだけな ので、ReadOnlyプロパティにします。 入力データのエラーチェックは、Setプロパティに実装します。 ClsShohinと ClsJuchuDetailIOが未実装なので、このままビルドすると、エ ラーになります。◆◆行をコメントアウトします。エラー部分は、次号から 実装していきます。 --【プログラムソースリスト:ClsJuchuDetail.vb】--------------------- Option Strict On Imports System.Text.RegularExpressions '%%%%%%%%%%%%% 抽象クラス:受注ディテール行クラス %%%%%%%%%%% Public MustInherit Class ClsDetailRowBase '--------------------< メンバ:変数 >------------------- Private shohinCodeValue As String ' 商品コード Private shohinMeishoValue As String ' 商品名称 Private juchuSuryoValue As Integer ' 受注数量 Private juchuTankaValue As Integer ' 受注単価 '====================================================== ' 機能:コンストラクタ ' 引数:なし '====================================================== Protected Sub New() ' 最初に基本クラスのコンストラクタを呼び出す MyBase.New() End Sub '------------------------------------------------------ ' プロパティ:商品コード '------------------------------------------------------ Public Property ShohinCode() As String ' Getプロパティ Get Return shohinCodeValue End Get ' Setプロパティ Set(ByVal value As String) ' 【エラーチェック】エラー時は例外をスロー If Not Regex.IsMatch(value, "^[0-9]+$") Then ' 数字以外は例外をスルー Throw New ShohinCodeException _ ("商品コードに数字以外の文字があります") Else ' 商品インスタンスの生成 '◆◆Dim shohin As New ClsShohin(value) ' 商品コードをプライベート変数にセット '◆◆shohinCodeValue = value ' 商品名称をプライベート変数にセット '◆◆shohinMeishoValue = shohin.ShohinMeisho ' 商品単価をプライベート変数にセット '◆◆juchuTankaValue = shohin.Tanka End If End Set End Property '------------------------------------------------------ ' プロパティ:商品名称(読取専用) '------------------------------------------------------ Public ReadOnly Property ShohinMeisho() As String ' Getプロパティ Get Return shohinMeishoValue End Get End Property '------------------------------------------------------ ' プロパティ:受注数量 '------------------------------------------------------ Public Property JuchuSuryo() As Integer ' Getプロパティ Get Return juchuSuryoValue End Get ' Setプロパティ Set(ByVal value As Integer) '【エラーチェック】1から100なら正常 If value >= 0 And value <= 100 Then juchuSuryoValue = value Else Throw New JuchuSuryoException _ ("受注数量は1から100を入力してください") End If End Set End Property '------------------------------------------------------ ' プロパティ:受注単価(読取専用) '------------------------------------------------------ Public ReadOnly Property JuchuTanka() As Integer ' Getプロパティ Get Return juchuTankaValue End Get End Property '------------------------------------------------------ ' プロパティ:受注金額(読取専用) '------------------------------------------------------ Public ReadOnly Property JuchuKingaku() As Integer ' Getプロパティ Get Return juchuTankaValue * juchuSuryoValue End Get End Property End Class '%%%%%%%%%%%%%%%%% 受注ディテール追加クラス %%%%%%%%%%%%%%%%% Public Class ClsInsertDetailRow Inherits ClsDetailRowBase '--------------------< メンバ:変数 >------------------- Private juchuBangoValue As String ' 受注番号 '====================================================== ' 機能:コンストラクタ ' 引数:ディテール表に追加する行データ ' 戻値:なし '====================================================== Public Sub New(ByVal row As DataRow) ' 最初に基本クラスのコンストラクタを呼び出す MyBase.New() ' エラーチェックとデータセット ShohinCode = CStr(row("商品コード")) JuchuSuryo = CInt(row("受注数量")) End Sub '------------------------------------------------------ ' プロパティ:受注番号 '------------------------------------------------------ Public Property JuchuBango() As String ' Getプロパティ Get Return juchuBangoValue End Get ' Setプロパティ Set(ByVal value As String) ' 【エラーチェック】 If value.Length = 0 Then ' 未入力はエラー Throw New JuchuBangoException _ ("受注番号を入力してください") End If ' 数字以外はエラー If Not Regex.IsMatch(value, "^[0-9]+$") Then Throw New JuchuBangoException _ ("受注番号に数字以外の文字があります") End If ' 受注ディテール表にアクセス '◆◆Dim dbIO As New ClsJuchuDetailIO ' 受注番号が受注ディテール表にあればエラー '◆◆If dbIO.ExistKeyData(value) = True Then '◆◆ Throw New JuchuBangoException _ '◆◆ ("受注番号は登録済みです") '◆◆End If juchuBangoValue = value End Set End Property End Class -------------------------------------------------------------------- 次号:商品クラスClsShohinの実装 ==================================================================== 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」「やさしいBV2008 ADO.NET」 などのホームページで公開しているソースプログラム・データの利用により 生じた損害等については、発行者は一切責任を負いません。ソースプログラ ムの再利用は自由です。著作権は発行者が所有します。 このメールマガジン及び「すぐ使えるADO.NET」「やさしいBV2008 ADO.NET」 などホームページに掲載されている会社名・製品名等は、各社の登録商標ま たは商標です。 ====================================================================
www.globalapostille.us Documents issued in the United States. Birth certificate apostille.. Valorant Cheats.