List 6-197 Business.SlipコンポーネントのDeleteBillメソッド
  1: Public Sub DeleteBill(ByVal BillID As Long)
  2:     ' 指定された請求書番号の請求書を削除する
  3:     ' DELETEDFLAGフィールドの値をFalseであればそれをTrueに
  4:     ' DELETEDFLAGフィールドの値がTrueであればレコードそのものを削除する
  5:     ' 【引数】
  6:     '   BillID = 削除したい請求書を特定する請求書番号
  7:     ' 【戻り値】
  8:     '   なし
  9:     Dim objContext As ObjectContext
 10:     Dim objDataBill As DataObj.Bill
 11:     Dim objDataSlip As DataObj.Slip
 12:     Dim objRec As ADODB.Recordset
 13:     Dim ACCOUNTINGUSER As Variant, ACCOUNTINGDATE As Variant
 14:     Dim ACCOUNTINGCOMMENT As Variant
 15:     
 16:     ' オブジェクトコンテキストの取得
 17:     Set objContext = GetObjectContext()
 18:     
 19:     ' エラーハンドラの設定
 20:     On Error GoTo ErrHandle
 21:     
 22:     ' DataObj.Billの実体化
 23:     Set objDataBill = CreateObject("DataObj.Bill")
 24:     
 25:     ' 請求書の状態を判定
 26:     Select Case objDataBill.Get_BillStatus(BillID)
 27:         Case BILL_Deleted
 28:             ' 削除ずみである
 29:             ' このときにはレコードを削除するだけ
 30:             objDataBill.DeleteRecord BillID
 31:         Case BILL_Created
 32:             ' 作成中である
 33:             
 34:             ' (1)請求書に結び付けられている伝票の一覧を取得
 35:             Set objDataSlip = CreateObject("DataObj.Slip")
 36:             Set objRec = objDataSlip.GetRecordsByBillID(BillID)
 37:             
 38:             While Not objRec.EOF
 39:                 ' (2)伝票と請求書との結び付きを解除
 40:                 objDataSlip.SetBillID objRec.Fields("ID").Value, Null
 41:                 ' (3)伝票を請求書作成まえの状態に復元
 42:                 objDataSlip.Set_MADEBILLFLAG objRec.Fields("ID").Value, False
 43:                 objDataSlip.GetRecord_Accounting objRec.Fields("ID").Value, _
                                                      ACCOUNTINGUSER, ACCOUNTINGDATE, _
                                                      ACCOUNTINGCOMMENT
 44:                 objDataSlip.Set_ACCOUNTINGFLAG objRec.Fields("ID").Value, True, _
                                                    ACCOUNTINGCOMMENT
 45:                 
 46:                 ' 次のレコードに移動
 47:                 objRec.MoveNext
 48:             Wend
 49:             
 50:             objRec.Close
 51:             Set objRec = Nothing
 52:             
 53:             Set objDataSlip = Nothing
 54:             
 55:             ' (4)請求書の状態を削除ずみに変更
 56:             objDataBill.SetDeletedFlag BillID, True
 57:             
 58:         Case Else
 59:             ' エラー
 60:             Err.Raise ERR_CANTDELETE, App.Title, _
                           "請求書がすでに送付されているか入金ずみになっているため操作できません"
 61:     End Select
 62:             
 63:     ' DataObj.Billコンポーネントの解放
 64:     Set objDataBill = Nothing
 65:     
 66:     ' トランザクションのコミット
 67:     objContext.SetComplete
 68:     
 69:     ' オブジェクトコンテキストの解放
 70:     Set objContext = Nothing
 71:     
 72:     Exit Sub
 73: 
 74: ErrHandle:
 75:     ' エラーハンドラ
 76:     objContext.SetAbort
 77:     Set objContext = Nothing
 78:     Set objDataBill = Nothing
 79:     Set objDataSlip = Nothing
 80:     Set objRec = Nothing
 81: 
 82:     ' エラーの再発行
 83:     Err.Raise Err.Number, Err.Source, Err.Description, _
                   Err.HelpFile, Err.HelpContext
 84: End Sub