イベントプロシージャ“txtCstmId_LostFocus”から呼び出されるFunctionプロシージャ“AddHeader”は、確定した伝票番号、日付、お客様IDを「売上ヘッダ」に1件のレコードとして追加します。使用するSQL命令はINSERT INTOです。
- オブジェクト変数とSQLの準備 -
データベースを扱うオブジェクト変数とSQL用の文字列変数を用意するところは、これまでと同じです。
Private Function AddHeader() As Boolean
|
Dim objConnect As New SqlConnection Dim objCommand As New SqlCommand Dim strSql As String |
レコード追加用のSQLは以下のようになります。
|
strSql = _ "INSERT INTO 売上ヘッダ " & _ "(伝票番号, 伝票日付, お客様ID, 伝票発行) " & _ "VALUES(" & _ strSlipNumber & ", '" & _ Customer.strDate & "', " & _ txtCstmId.Text & ", " & "0)" |
VALUES句に続く()内では、伝票番号にグローバル変数“strSlipNumber”、日付に構造体変数“Customer”のメンバ“strDate”、お客様IDにはテキストボックスtxtCstmIdの値を列挙しています。ちなみに、日付にはtxtData.Textを使っても構いません。
接続文字列の設定からSQLの設定までは、これまでに紹介してきた流れと同じなので省略します。
|
Try |
|
|
' 接続文字列の設定 : objCommand.CommandText = strSql |
レコードの追加には、CommandオブジェクトのExecuteNonQueryメソッドを使います。戻り値は追加された件数なので、1以上なら成功と見なしてTrueを、そうでなければ失敗と見なしてFalseを返すようにしています。
|
If objCommand.ExecuteNonQuery >= 1 Then AddHeader = True Else AddHeader = False Exit Function End If |
これ以降の例外処理と接続を閉じる処理は、これまでに紹介したものと変わらないため省略します。
今回のサンプルはかなり簡略化しましたが、それでもこれまでの単純なレコードの抽出や追加処理に比べてソースコードが長く、処理も複雑になっています。そのため、今回は顧客情報を記録するところまでを紹介することにします。
商品情報の入力とグリッドへの明細表示、テーブル「売上明細」へのレコードの追加処理などは次回に取り上げますのでご了承ください。
サンプルのVBプロジェクトとソースコードも、今回は途中までとなっています。完全な処理はできませんがお客様IDを入力して情報を表示し、「売上ヘッダ」にレコードを記録するところまでは実行できます。
なお、次回に紹介するサンプルで再び「売上ヘッダ」へのレコード追加から処理を実行することになるため、今回のサンプルを試したら必ずEnterprise Manegerで「売上ヘッダ」の全レコードを表示し、それらを選択して削除しておいてください。そうしないと、次回のサンプルを試したときにレコード件数に矛盾が発生します(削除しなくても、処理自体への影響はありません)。
|
|
|