SSブログ

データ登録フォーム 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画面版の登録画面でした。


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

nice! 0

コメント 0

コメントを書く

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

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

トラックバック 0

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

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