List 7-75 FormProductフォームのBTN_DELETE_Clickプロシージャ


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