List 7-193 FormBillフォームのBTN_DELETE_Clickプロシージャ


  1: Private Sub BTN_DELETE_Click()
  2:     ' [削除]ボタンが押されたときの処理
  3:     Dim objBill As Business.Bill
  4:     Dim DeletedFlag As Boolean
  5:     Dim beforeBillID As Long, BillID As Long
  6:     
  7:     ' 削除の確認
  8:     If MsgBox("請求書番号" & g_objRec.Fields("ID").Value & _
                   "のデータを削除してよろしいですか", vbYesNo, _
                   "削除の確認") = vbYes Then
  9:         ' その時点のDELETEDFLAGフィールドの値を取得する
 10:         DeletedFlag = g_objRec.Fields("DELETEDFLAG").Value
 11:         ' その時点のIDフィールドの値を取得する
 12:         BillID = g_objRec.Fields("ID").Value
 13:         
 14:         On Error Resume Next
 15:         ' 削除後にカレント行に設定したい行のIDフィールドの値を保存しておく
 16:         If (g_uRole And (ROLE_ALLADMIN Or ROLE_PRODUCTSADMIN)) And _
                 (g_BILLSTATUS And FILTER_BILL_DELETED) Then
 17:             ' AllAdminロールまたはProductsAdminロールに属していて
 18:             ' かつ,削除対象となったレコードのDELETEDFLAGフィールドの値が
 19:             ' Falseであった場合には,その時点のカレント行のIDフィールドの値を記録する
 20:             beforeBillID = BillID
 21:         Else
 22:             ' そうでなければ,その時点のカレント行より1つ後ろの行のIDフィールドの値を記録する
 23:             g_objRec.MoveNext
 24:             beforeBillID = g_objRec.Fields("ID").Value
 25:         End If
 26:         
 27:         If Err.NUMBER <> 0 Then
 28:             beforeBillID = 0
 29:             Err.Clear
 30:         End If
 31:         
 32:         On Error GoTo ErrHandle
 33:         ' 削除する
 34:         Set objBill = CreateObject("Business.Bill")
 35:         objBill.DeleteBill BillID
 36:         
 37:         ' データグリッドの表示を更新
 38:         RefreshData
 39:         
 40:         On Error Resume Next
 41:         
 42:         ' カレント行を再設定する
 43:         g_objRec.MoveFirst
 44:         g_objRec.Find "ID=" & beforeBillID, 0, adSearchForward
 45:         
 46:         Set objBill = Nothing
 47:     End If
 48:     
 49:     Exit Sub
 50: 
 51: ErrHandle:
 52:     ' ビジネスオブジェクトの呼び出しに失敗
 53:     MsgBox Err.Description, vbOKOnly, "請求書情報の削除"
 54:     Set objBill = Nothing
 55: End Sub