データ登録フォーム 1画面版 その5 データの削除 [Form登録一画面版]
その1、その2、その3、その4の続きです。
最後に、登録されているデータを削除する処理を作ります。
削除くらいだったら、削除SQL作って、それをExecuteでもいいんですが、ここではRecordSetを使って削除します。
削除を行う時の、この画面の操作手順は、一覧から削除したいデータの「編集」ボタンをクリックして、編集モードにします(画面イメージの状態)。
削除するデータを選択した後、「削除」ボタンをクリックすることで、削除を行います。
では、ソース。
Private Sub cmdDEL_Click()
'削除ボタン クリック
Dim recA As New ADODB.Recordset
'1.モードチェック
If Me.txtMODE = "新規" Then
MsgBox "削除データを選択して下さい。", vbExclamation
Exit Sub
End If
'2.対象データをSelect
recA.Open "SELECT * FROM TMSYOHIN WHERE COMCD = " & Me.txtCOMCD, _
CurrentProject.Connection, adOpenForwardOnly, adLockOptimistic
If recA.EOF = True Then
MsgBox "削除データが見つかりません。", vbExclamation
recA.Close
Exit Sub
End If
'3.削除確認、実行
If MsgBox("商品CD:" & recA!COMCD & "・商品名:" & recA!COMMEI & vbCr & _
"このデータを削除します。よろしいですか?", 324) = vbNo Then
recA.Close
Exit Sub
End If
recA.Delete
'4.クローズ、一覧再表示、画面初期化
recA.Close
Me.subLIST.Requery
Call subCLR
End Sub
では、順番に・・・。
1.モードチェック
If Me.txtMODE = "新規" Then
MsgBox "削除データを選択して下さい。", vbExclamation
Exit Sub
End If
「削除」ボタンがクリックされた時に、削除データが選択されているかどうかのチェックをしています。データが選択されているときは、「変更」になっているので、「新規」の場合は、処理を中止します。
余談ですが、私は処理中止の時はそこでExit Subを書いて、ぷつっと終わるのが好きです。
IF…Else…EndIFで全体を囲って、ネストしまくるのは嫌なので。
2.対象データをSelect
削除データを、レコードセットで開きます。画面のテキストボックスに削除データの商品CDがあるので、それを使って、SELECTします。
recA.Open "SELECT * FROM TMSYOHIN WHERE COMCD = " & Me.txtCOMCD, _
CurrentProject.Connection, adOpenForwardOnly, adLockOptimistic
If recA.EOF = True Then
MsgBox "削除データが見つかりません。", vbExclamation
recA.Close
Exit Sub
End If
万が一、何かの間違いで、レコードがSelectできなかった時のことを考えて、一応データの存在チェックをしています(EOFの確認)。念のため。でも絶対書きましょうね。
ここでも余談。MsgBoxを表示するとき、文章の他に、アイコンも表示できるのですが、私は以下のようなルールで使い分けています。
・vbInformation … 確認メッセージ。単純な「処理が完了しました」のようなメッセージや、はい・いいえを聞くときとかにつけます。
・vbExclamation … 注意、警告、ワーニング。お客様がよろしくない操作をしたときに、ご注意申し上げる時につけます。
・vbCritical … こっちが予測していなかったエラーが起きたときにつけます(エラートラップしてメッセージ表示)。作業を止めて、電話下さいっていう状況です。
意味もなくCriticalを多用する人がいますが、心臓に悪いです。
3.削除確認、実行
ほんとにデータを削除する前に、一応、ユーザ様にお伺いを立てます。
MsgBoxの「はい」が選択されたら、削除を実行します。
If MsgBox("商品CD:" & recA!COMCD & "・商品名:" & recA!COMMEI & vbCr & _
"このデータを削除します。よろしいですか?", 324) = vbNo Then
recA.Close
Exit Sub
End If
recA.Delete
MsgBoxの「324」は、「vbInformation + vbYesNo + vbDefaultButton2」のことです。念のため。めんどくさいからこう書くことが多いです。「はい、いいえ」を聞くときは、これを必ず使うようにしてます。
recA.Deleteで、現在のレコードが削除されます。
4.クローズ、一覧再表示、画面初期化
最後の後始末です。
RecordSetを閉じて、サブフォームのデータ一覧を再表示して、入力テキストボックスに削除したデータの内容が入っているので、そこをクリアします。
recA.Close
Me.subLIST.Requery
Call subCLR
以上、これで削除処理完了です。
以上、簡単な登録画面の例でした。
次は、入力項目が多い時用の登録画面の例の予定です。
コメント 0