2016-07-14 2 views
0

テーブルのレコードを含むサブフォームを持つこのフォームがあります。 ユーザーがチェックボックスをオンにしたときに、「アプリケーションを承認しますか?」というメッセージが表示されます。ユーザーが[OK]をクリックすると、チェックボックスの値と編集された他のレコードがテーブルに保存されます。 しかし、ユーザーがレコードを編集すると、自動的にテーブルが更新されます。ここデータのレコードが編集されたときに自動保存を停止する方法

は私formのサンプルです: ここに私のコードです:

Private Sub chkApproved_Click() 
Dim strSQL As String 
Dim rs As DAO.Recordset 
DoCmd.SetWarnings False 

strSQL = "SELECT * FROM RECORD WHERE ID = '" & Me.txtID & "' AND DATE = #" & Me.txtDate & "# " 
Set rs = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset) 

If Me.chkApproved = -1 Then 
If MsgBox("Do you want to approve application?", vbOKCancel, "Leave Approval") = vbOK Then 

    If Not rs.EOF Then 
     rs.Edit 
     rs.Fields("APPROVED_FLG") = Me.chkApproved.Value 
     rs.Fields("LEAVE_FLG") = Me.chkLeave.Value 
     rs.Fields("REMARKS") = Me.REMARKS 
     rs.Update 
    End If 
    rs.Requery 
Else 
    Me.chkApproved = 0 
End If 
Else 
Exit Sub 
End If 

rs.Close 
Set rs = Nothing 

DoCmd.SetWarnings True 

End Sub 

そしてまた私は、承認されたチェックボックスがすでにチェックされているとき休暇チェックボックスを無効にしたいです。コードに追加しようとしましたが、常にチェックボックスをすべて無効にしてしまいます。

私はこれに新しいので、私はmuch.pleaseヘルプmeを知らない。

答えて

0

アクセスは、データベースを直接編集しているため、変更内容をすぐにデフォルトの動作として保存します。はい/いいえのメッセージボックスがすでに設定されているのがわかります。ユーザーが変更を拒否した場合は、Undo and Cancelを実行してみてください。

連続したフォームで1つのバインドされていないオブジェクトを無効にするには、this linkを試してください。

+0

私はそのコードを試しましたが、pay_leaveの下にあるすべてのチェックボックスを無効にすることになります。承認されたflgがチェックされている行のみ、その行のpaid_leaveチェックボックスを無効にする必要があります。アドバイスありがとうございます。 – geekypanda

+0

@geekypanda複数のチェックボックスと1つのpaid_leaveチェックボックス、または複数のpaid_leaveチェックボックスを含む連続フォーム(レコードごとに1つ)のフォームを使用していますか?私の答えのコードは、フォームに1つのpaid_leaveチェックボックスがある場合に機能します。 – jjjjjjjjjjj

+0

im複数のpaid_leaveチェックボックス(レコードごとに1つ)を含む連続フォームを使用しています。 – geekypanda

関連する問題