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