SSブログ

データ登録フォーム 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

 以上、これで削除処理完了です。

 以上、簡単な登録画面の例でした。
 次は、入力項目が多い時用の登録画面の例の予定です。


nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。
※URL(リンク)は記述できません。

トラックバック 0

トラックバックの受付は締め切りました

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。