SSブログ

データ登録フォーム 伝票形式 その5 削除処理 [Form登録伝票版]

 伝票形式での、削除処理の詳細です。

 削除ボタンも登録ボタンと同様に、明細用と伝票用の2つがあります。
 画面中央右側の削除ボタンが、明細の削除用です。
 処理的には、「データ登録フォーム 1画面版 その5 データの削除」と、同じ要領ですので、ここでは省略します。

 次に、画面下部分にある「伝票削除」ボタン。こちらが伝票削除用です。
 このボタンをクリックすると、明細を含め、伝票全体のデータが削除されます。
 以下、削除処理の説明です。

Private Sub cmdDenDel_Click()
'伝票削除ボタン クリック

    Dim Cn    As New ADODB.Connection
    Dim recA  As New ADODB.Recordset
    Dim lngRC As Long

'1)モードチェック
    If Me.txtDENmode = "新規" Then
        MsgBox "新規登録時は削除はできません。", vbInformation
        Exit Sub
    End If
    
    If MsgBox("この売上伝票を削除します。", vbQuestion + vbYesNo + vbDefaultButton2) = vbNo Then
        Exit Sub
    End If
    
'2)トランザクション開始
    Set Cn = CurrentProject.Connection
    Cn.BeginTrans
   
'3)TD売上伝票 削除
    Cn.Execute "DELETE FROM TD売上伝票 WHERE 伝票番号 = " & Me.txt伝票番号, lngRC
    If lngRC <> 1 Then
        MsgBox "売上伝票を正しく削除できませんでした。", vbExclamation
        Cn.RollbackTrans
        Exit Sub
    End If
    
'4)TD売上明細 削除
    Cn.Execute "DELETE FROM TD売上明細 WHERE 伝票番号 = " & Me.txt伝票番号
    
'5)コミット
    Cn.CommitTrans
        
'6)後処理
    Cn.Execute "DELETE FROM TW売上明細 "
    Forms.F売上伝票一覧.subList.Requery
    DoCmd.Close acForm, Me.NAME
    
End Sub

 順番に処理を説明します。

1)モードチェック
 伝票の新規入力時、つまり新規の伝票を入力している途中は、まだテーブルにレコードが作成されていないので、削除処理はできません。
 なので、まず最初に、入力モードをチェックして、新規モードならメッセージを表示して、処理を中止します。
 最初から新規入力時は削除ボタンが表示されなければ良い話なんですが。

 その後で、削除処理の確認メッセージを表示させています。
 いちおう、いきなり削除するのはあれなんで。

2)トランザクション開始
 コネクションの準備と、トランザクションの開始です。
 伝票の削除処理では、TD売上伝票とTD売上明細の2つのテーブルからデータを削除するため、ここでもトランザクションで処理を行います。

3)TD売上伝票 削除
 画面上の伝票番号を条件にして、削除を実行します。
 この時、Executeのパラメタに指定しているlngRCには、削除されたレコード件数が返ります。
 TD売上伝票の削除は、必ず1件なので、削除後それをチェックしています。
 この処理の場合、削除件数が1件以外の場合は、何かがおかしいので、エラーメッセージを出して、ロールバックしています。

 いろんなケースの削除処理があると思いますが、このケースのように削除件数が必ず1件と決まっている場合は、私はこんなふうにチェックをするようにしています。
 削除処理は、条件の作り方を間違えると、消してはいけないデータを消してしまうリスクが常に潜んでいるので、念の為です。

4)TD売上明細 削除
 明細の削除処理です。こちらも伝票番号を条件にして、削除を実行しています。
 明細の場合は、明細が複数件の場合や、明細が登録されていない場合(0件)もあり、件数が不定なので、伝票のような削除件数のチェックは行っていません。

5)コミット
 トランザクションのコミット処理です。
 コミットにより、削除処理が確定します。

6)後処理
 入力画面で使用している明細表示用のワークテーブルの内容は、不要なので削除します。
 削除が完了したので、現在の画面を閉じて、一覧画面に戻ります。

 以上、伝票の削除処理でした。
 登録処理と同様、伝票と明細の2テーブルに対して処理を行います。登録に比べると簡単だと思います。
 ACCESSなんで、リレーションを設定しておけば、伝票の削除と同期して、明細も削除されるようにできるのですが、私はリレーションを使わないので、こういう処理になります。

 以上、ざっくりですが、伝票形式の例でした。 

 ぼちぼちサンプルのダウンロードが出来るように準備を始めようと思っています。
 もうしばらくお待ち下さい。


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

nice! 0

コメント 0

コメントを書く

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

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

トラックバック 0

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

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