List 7-130 FormSlipフォームのBTN_DELETE_Clickプロシージャ


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