List 5-12 acceptOrderメソッド
1: Public Sub acceptOrder(ByVal ProductID As Long, _
ByVal CustomerName As String, _
ByVal Number As Long)
2: '受注を受け付ける
3: Dim objchkstock As dbsamplecom.chkstock
4: Dim objsetstock As dbsamplecom.setstock
5: Dim objinsorder As dbsamplecom.insorder
6: Dim objContext As ObjectContext
7: Dim Stock As Long
8:
9: 'オブジェクトコンテキストを取得
10: Set objContext = GetObjectContext()
11:
12: 'エラーハンドラを設定
13: On Error GoTo ErrorHandler
14:
15: '各種COMオブジェクトの実体化
16: Set objchkstock = CreateObject("dbsamplecom.chkstock")
17: Set objsetstock = CreateObject("dbsamplecom.setstock")
18: Set objinsorder = CreateObject("dbsamplecom.insorder")
19:
20: '受注レコードを書き込む
21: objinsorder.insertOrder ProductID, CustomerName, Number
22:
23: '在庫の確認
24: Stock = objchkstock.checkStock(ProductID)
25:
26: '在庫を減らす
27: Stock = Stock - Number
28: If Stock < 0 Then
29: '在庫不足
30: Err.Raise 2 + 512 + vbObjectError, "acceptOrder", "在庫不足です"
31: Exit Sub
32: End If
33:
34: '減らした在庫を書き込む
35: objsetstock.updateStock ProductID, Stock
36:
37: 'COMオブジェクトの破棄
38: Set objinsorder = Nothing
39: Set objsetstock = Nothing
40: Set objchkstock = Nothing
41:
42: 'コミット
43: objContext.SetComplete
44: Exit Sub
45:
46: ErrorHandler:
47: 'エラーハンドラ
48: 'エラーが発生したときには,トランザクションをアボートに設定
49: objContext.SetAbort
50: 'エラーをもう一回引き起こす
51: Err.Raise Err.Number, Err.Source, Err.Description
52:
53: End Sub