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