バックナンバー 第75号:VB2008 データベースプログラミング

VB 2008 Express Editiont と、SQL Server 2008 Express with Advanced Services を使って、フォームから入力した受注データを、受注ヘッダー表と受注ディテール表に登録する、受注伝票エントリープログラムを作成していきます。
受注伝票エントリー 第3回(システム日付取得)
第75号(2009.8.24発行)
====================================================================
       ★★ -- VB.NETデータベースプログラミング奮闘記 -- ★★
           (VB 2008 Express & SQL Server 2008 Express)
--------------------------------------------------------------------
いつもご購読ありがとうございます。ADO.NETの基本的なサンプルプログラ
ムをお届けします。今後ともよろしくお願い申し上げます。

やさしいVB2008 ADO.NET → https://adonetvb.com/index.html
====================================================================
                ■■ 受注伝票エントリー 第3回 ■■

フォームから入力した受注データを、受注ヘッダー表と受注ディテール表に
登録するプログラムを作成します。

フォームはこちら↓(一部名称の変更やコントロ-ルの追加があります)
  https://adonetvb.com/OrderEntry/index.html


テーブル定義はこちら → https://adonetvb.com/OrderEntry/DB.html

--------------------------------------------------------------------
                ■ SELECT CONVERT(DATE, GETDATE()) ■

まず、システム日付を取得する共有メソッドGetSysDateを、販売管理データ
ベースアクセス基本クラスに実装します。共有メソッドには、Sharedキー
ワードを付加します。

SQL文に"SELECT CONVERT(DATE, GETDATE())"を指定して、SqlCommandの
ExecuteScalarメソッドを呼び出すと、西暦年月日のみ取得できます。
DATE(date)は、SQL Server 2008 から新たに加わったデータ型です。

共有メソッドは、インスタンスを生成する必要がなく、クラス名.メソッド
名で呼び出します。

DBを開くときは、派生クラスからのみ利用できる共有メソッドOpenDBを使い
ます。やはり販売管理データベースアクセス基本クラスに実装します。この
クラスには、DBアクセスの共通メソッドを実装していきます。

DB接続文字列は、app.configファイルにあらかじめ登録しておきます。

接続文字列の作成方法はこちら↓
  https://adonetvb.com/VB2008Connection01.html

--【プログラムソースリスト:ClsHanbaiKanriDBIO.vb】----------------
Option Strict On

Imports System.Configuration '参照の追加 System.Configuration
Imports System.Data.SqlClient
Imports System.Text.RegularExpressions
Imports System.Transactions  '参照の追加 System.Transactions

'/// 抽象クラス:販売管理データベースアクセス基本クラス ////
Public MustInherit Class ClsHanbaiKanriDBIO

    '*******************************************************
    ' 機能:現在のシステム日付を取得する共有メソッド
    ' 引数:なし
    ' 戻値:現在のシステム日付
    '*******************************************************
    Public Shared Function GetSysDate() As Date

        Dim retSysDate As New Date             ' リターン値

        Try
            Using con As New SqlConnection
                Using cmd As New SqlCommand
                    ' DBを開く
                    ClsHanbaiKanriDBIO.OpenDB(con, cmd)

                    ' SQL文設定
                    cmd.CommandText = _
                        "SELECT CONVERT(DATE, GETDATE())"

                    ' システム日付取得
                    retSysDate = CDate(cmd.ExecuteScalar())

                End Using
            End Using

            ' ◆戻値を設定してリターン
            Return retSysDate

        Catch ex As DBIOException
            ' DBIO例外が発生した時の処理
            Throw New DBIOException(ex.Message)

        Catch ex As Exception
            ' その他例外が発生した時の処理
            Throw New Exception(ex.ToString)

        End Try

    End Function

    '*******************************************************
    ' 機能:DBを開く共有メソッド
    ' 引数:SqlConnectionオブジェクト(参照渡し)
    ' 引数:SqlCommandオブジェクト(参照渡し)
    ' 戻値:なし
    ' 補足:app.configファイルの
    '   :<connectionStrings>のaddタグのname属性を
    '   :"販売管理ConnectionString"に変更
    '*******************************************************
    Protected Shared Sub OpenDB _
        (ByRef con As SqlConnection, ByRef cmd As SqlCommand)

        Try
            ' 変数の宣言
            Dim settings As ConnectionStringSettings

            ' 接続文字列をapp.configファイルから取得
            settings = ConfigurationManager.ConnectionStrings _
                ("販売管理ConnectionString")

            If settings Is Nothing Then
                ' 接続文字列取得エラー
                Throw New DBIOException _
                    ("接続文字列がapp.configに未登録.")
            Else
                ' 接続文字列の設定
                con.ConnectionString = settings.ConnectionString

                ' SqlCommand.Connectionプロパティの設定
                cmd.Connection = con

                ' DBを開く
                con.Open()

            End If

        Catch ex As DBIOException
            ' DBIO例外が発生した時の処理
            Throw New DBIOException(ex.Message)

        Catch ex As Exception
            ' その他例外が発生した時の処理
            Throw New Exception(ex.ToString)

        End Try

    End Sub

End Class

--------------------------------------------------------------------
                        ■ 独自例外クラス ■

独自例外クラスDBIOExceptionを作成します。他の独自例外クラスも同様に
なります。

--【プログラムソースリスト:ClsException.vb】-----------------------

'////////////////// DBIO独自例外クラス /////////////////////
Public Class DBIOException
    Inherits ApplicationException

    Public Sub New(ByVal message As String)
        MyBase.New(Message)
    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」「やさしいBV2008 ADO.NET」
などのホームページで公開しているソースプログラム・データの利用により
生じた損害等については、発行者は一切責任を負いません。ソースプログラ
ムの再利用は自由です。著作権は発行者が所有します。
このメールマガジン及び「すぐ使えるADO.NET」「やさしいBV2008 ADO.NET」
などホームページに掲載されている会社名・製品名等は、各社の登録商標ま
たは商標です。
====================================================================