hatena
hatena
2024/01/30 (火) 08:57:34
3で提示したコードの条件にレコード件数が0もつけ加えるといいでしょう。
Private Sub Form_Unload(Cancel As Integer)
If Me.埋め込み1.Form.Recordset.RecordCount = 0 Or Me.埋め込み1.Form!SumF2.Value <> Me.埋め込み1.Form!SumF4.Value Then
Cancel = True
Me.埋め込み1.SetFocus
End If
End Sub
Private Sub 埋め込み1_Exit(Cancel As Integer)
Me.埋め込み1.Form.Requery 'レコード保存
If Me.埋め込み1.Form.Recordset.RecordCount = 0 Then
Cancel = True
MsgBox "明細データを1件以上入力してください"
ElseIf Me.埋め込み1.Form!SumF2.Value <> Me.埋め込み1.Form!SumF4.Value Then
Cancel = True
MsgBox "F2とF4の合計が合っていません!"
End If
End Sub
これでサブフォームのレコード件数が0のときはフォームを閉じれなくなります。
ただし、これだけではメインレコード移動は規制できません。
レコード移動時イベントでは、レコード移動した後に発生するしキャンセルできないので。
いろいろ考えてみましたが、難しそうですね。
レコード移動時イベントで、サブのレコード件数が0のメインのレコードがないかチェックして、あればそこにレコード移動するという感じでするとか、ぐらいかな。
ちょっと面倒そうですね。
通報 ...