List 6-152 DataObj.StockコンポーネントのGetReadyDateメソッド
1: Public Function GetReadyDate(ByVal ProductID As Long, _
ByVal Number As Long) As Variant
2: ' 指定された製品が指定された数量だけ今後入庫する最短の日付を返す
3: ' もし,将来的にその数量だけ入庫する予定がなければNullを返す
4: ' 【引数】
5: ' ProductID = 調査する製品の製品番号
6: ' Number = 数量
7: ' 【戻り値】
8: ' 指定された数量が入庫する日付。
9: ' 永遠にその数量だけ入庫する予定がなければNull
10: Dim objContext As ObjectContext
11: Dim objConn As ADODB.Connection
12: Dim objRec As ADODB.Recordset
13: Dim NumberTotal As Long
14: Dim ReadyDate As Variant
15:
16: ' オブジェクトコンテキストの取得
17: Set objContext = GetObjectContext()
18:
19: ' エラーハンドラの設定
20: On Error GoTo ErrHandle
21:
22: ' データベースに接続し,SQL文を実行する
23: Set objConn = CreateObject("ADODB.Connection")
24: objConn.Open g_DBConnection
25: Set objRec = objConn.Execute( _
"SELECT * FROM 在庫情報" & _
" WHERE NUMBER > 0 AND CONFIRMEDFLAG = 0" & _
" AND DELETEDFLAG = 0" & _
" AND PRODUCTID=" & ProductID & _
" ORDER BY DATE")
26:
27: ' 指定された数量が揃うまでの日付を求める
28: NumberTotal = 0
29: ReadyDate = Null
30:
31: Do While Not objRec.EOF
32: NumberTotal = NumberTotal + objRec.Fields("NUMBER").Value
33: If NumberTotal >= Number Then
34: ' 指定された数量が揃った
35: ' このときの日付が指定された数量が揃う日付となる
36: ReadyDate = objRec.Fields("DATE").Value
37: Exit Do
38: End If
39: objRec.MoveNext
40: Loop
41:
42: ' 戻り値を設定
43: GetReadyDate = ReadyDate
44:
45: ' データベースとの接続を閉じてレコードセットを解放
46: Set objRec = Nothing
47: objConn.Close
48: Set objConn = Nothing
49:
50: ' トランザクションのコミット
51: objContext.SetComplete
52:
53: ' オブジェクトコンテキストの解放
54: Set objContext = Nothing
55:
56: Exit Function
57:
58: ErrHandle:
59: ' エラーハンドラ
60: objContext.SetAbort
61: Set objContext = Nothing
62: Set objConn = Nothing
63: Set objRec = Nothing
64:
65: ' エラーの再発行
66: Err.Raise Err.Number, Err.Source, Err.Description, _
Err.HelpFile, Err.HelpContext
67: End Function