List 6-153 DataObj.SlipDetailコンポーネントのGetRecords_GroupProductメソッド
  1: Public Function GetRecords_GroupProduct(ByVal SlipID As Long) As ADODB.Recordset
  2:     ' 指定された伝票に付随する明細を製品ごとにまとめて
  3:     ' ADODB.Recordsetオブジェクトとして返す
  4:     ' 【引数】
  5:     '   SlipID = 伝票を特定する伝票番号
  6:     ' 【戻り値】
  7:     '   その伝票に結び付けられている明細を製品ごとにまとめたADODB.Recordsetオブジェクト
  8:     '   戻り値となるADODB.Recordsetオブジェクトは読み取り専用の閉じたRecordset
  9:     Dim objContext As ObjectContext
 10:     Dim objRec As ADODB.Recordset
 11:     
 12:     ' オブジェクトコンテキストの取得
 13:     Set objContext = GetObjectContext()
 14:     
 15:     ' エラーハンドラの設定
 16:     On Error GoTo ErrHandle
 17:     
 18:     ' データベースと接続し,SELECT文を発行する
 19:     Set objRec = CreateObject("ADODB.Recordset")
 20:     ' カーソルロケーションをクライアントカーソルに設定する
 21:     objRec.CursorLocation = adUseClient
 22:     
 23:     ' SELECT文の実行
 24:     objRec.Open "SELECT PRODUCTID, SUM(NUMBER) As NUMBER FROM 明細情報" & _
                     " WHERE DELETEDFLAG = 0 AND SLIPID = " & SlipID & _
                     " GROUP BY PRODUCTID", _
                     g_DBConnection, adOpenStatic, adLockReadOnly, adCmdText
 25:                 
 26:     ' データベースコネクションを切り離す
 27:     Set objRec.ActiveConnection = Nothing
 28:     
 29:     ' 取得したレコードセットを戻り値とする
 30:     Set GetRecords_GroupProduct = objRec
 31:     Set objRec = Nothing
 32:     
 33:     ' トランザクションのコミット
 34:     objContext.SetComplete
 35:     
 36:     ' オブジェクトコンテキストの解放
 37:     Set objContext = Nothing
 38:     
 39:     Exit Function
 40: ErrHandle:
 41:     ' エラーハンドラ
 42:     objContext.SetAbort
 43:     Set objContext = Nothing
 44:     Set objRec = Nothing
 45:     
 46:     ' エラーの再発行
 47:     Err.Raise Err.Number, Err.Source, Err.Description, _
                   Err.HelpFile, Err.HelpContext
 48: End Function