データ登録フォーム 2画面版 その3 入力画面 [Form登録二画面版]
続いて入力画面の処理です。
新規の場合は、レコードの新規登録。変更の場合は、レコードの変更登録、または削除の処理を行います。
ではまず、「登録」ボタンをクリックしたときの処理から行きます。
Private Sub cmdENT_Click()
'登録ボタン クリック
Dim Cn As ADODB.Connection
Dim recA As New ADODB.Recordset
Dim datNOW As Date
'1)入力チェック
'項目のチェック処理
'(省略)
' …
'2)処理日時取得
datNOW = Now()
'3)Recordsetオープン
Set Cn = CurrentProject.Connection
recA.Open "SELECT * FROM TMCUS WHERE CUSCD = " & Me.txtCUSCD, _
Cn, adOpenForwardOnly, adLockOptimistic
'4)登録処理
If Me.txtMODE = "新規" Then
'新規登録
If recA.EOF = False Then
MsgBox "すでにこの得意先CDで登録されています。", vbExclamation
recA.Close
Exit Sub
End If
recA.AddNew
recA!CUSCD = Me.txtCUSCD
recA!INSYMD = datNOW
Else
'変更登録
If recA.EOF = True Then
MsgBox "変更データが見つかりません。", vbExclamation
recA.Close
Exit Sub
End If
End If
recA!KANJIMEI = Me.txtKANJIMEI
recA!KANAMEI = Me.txtKANAMEI
recA!ZIPCD = Me.txtZIPCD
recA!ADD1 = Me.txtADD1
recA!ADD2 = Me.txtADD2
recA!ADD3 = Me.txtADD3
recA!TEL = Me.txtTEL
recA!FAX = Me.txtFAX
recA!MAIL = Me.txtMAIL
recA!UPDYMD = datNOW
recA.Update
recA.Close
'5)後処理
MsgBox "登録が完了しました。", vbInformation
If Me.txtMODE = "新規" Then
'新規登録
Call subCLR
Else
'変更登録
Forms!FMCUS010.subLIST.Requery
DoCmd.Close acForm, Me.NAME
End If
End Sub
基本的にやってることは、「データ登録フォーム 1画面版 その4 データをテーブルに書き込む」と同じなので、細かい説明は割愛します。
最後の5)の部分が、1画面版とは違っています。
新規登録の場合は、1件登録し終わったら、続けて別のレコードを登録するかも知れないので、再び画面を空の状態に戻して、この画面のまま続けて登録作業が出来るようにしています。
変更登録の場合は、画面を閉じて、一覧画面へ戻ります。その際、レコードの内容が変更されているので、一覧をRequeryします。
次に、「削除」ボタンの処理。
Private Sub cmdDEL_Click()
'削除ボタン クリック
Dim Cn As ADODB.Connection
Dim recA As New ADODB.Recordset
'1)対象データをSelect
Set Cn = CurrentProject.Connection
recA.Open "SELECT * FROM TMCUS WHERE CUSCD = " & Me.txtCUSCD, _
CurrentProject.Connection, adOpenForwardOnly, adLockOptimistic
If recA.EOF = True Then
MsgBox "削除データが見つかりません。", vbExclamation
recA.Close
Exit Sub
End If
'2)削除確認、実行
If MsgBox("得意先CD:" & recA!CUSCD & "・得意先名:" & recA!KANJIMEI & _
vbCrLf & "このデータを削除します。よろしいですか?", 324) = vbNo Then
recA.Close
Exit Sub
End If
recA.Delete
'3)後処理
recA.Close
Forms!FMCUS010.subLIST.Requery
DoCmd.Close acForm, Me.NAME
End Sub
こちらもやってることは概ね同じです。こちらも最後に、Requeryして、画面を閉じて一覧へ戻るようにしています。
ちょっと余談ですが、Recordset を使用してレコードを処理するのと、SQL文でUPDATEやINSERT文を実行するのと、どちらが効率がよいか?という内容をよく見かけます。そりゃ、SQL文を実行する方が、早いです。クライアント側は、テキスト文を送信するだけですので。
でも、こういう画面の処理で、1件やそこらの少ない件数のデータであれば、気にするような物ではないと思います。
それよりなにより、VBでSQL文を組み立てるコーディングをするのが、私は面倒くさくて嫌いです。いっぱい「&」で繋げるのが、面倒くさいし、ソースが見難くなるし。
そんなわけで、私はRecordset派です。
最後に、「終了」ボタンの処理です。
Private Sub cmdEXIT_Click()
'終了ボタン クリック
Forms!FMCUS010.subLIST.Requery
DoCmd.Close acForm, Me.NAME
End Sub
画面を閉じて一覧へ戻るのですが、テーブルのデータが変更されている可能性があるので、Requeryをかけています。
以上、2画面版の登録画面でした。
コメント 0