액세스를 종료하기 전에 양식을 완전히 닫습니다.
-
21-12-2019 - |
문제
양식을 사용하는 Access 2010 데이터베이스가 있습니다. frmTimeKeeper
데이터베이스의 사용자를 추적합니다.양식 자체의 너비는 0이므로 볼 수 없습니다.데이터베이스가 열릴 때 열리고 액세스가 닫힐 때 닫히는 첫 번째 양식입니다.2개의 이벤트(개시 및 종료)가 있습니다.
Private Sub Form_Close()
DoCmd.SetWarnings False
DoCmd.RunSQL "UPDATE tblUserLogs SET timeOut=#" & Date & " " & time() & "# WHERE id=" & UserLogID
DoCmd.SetWarnings True
MsgBox "time keeper close"
End Sub
Private Sub Form_Open(Cancel As Integer)
DoCmd.SetWarnings False
DoCmd.RunSQL "INSERT INTO tblUserLogs(user, timeIn) VALUES ('" & Environ("Username") & "',#" & Date & " " & time() & "#)"
DoCmd.SetWarnings True
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("SELECT TOP 1 * FROM tblUserLogs WHERE user='" & Environ("Username") & "' AND timeOut IS NULL ORDER BY id DESC")
UserLogID = rst(0)
DoCmd.OpenForm "frmLogin"
End Sub
UserLogID
전역 변수입니다
기본적으로 양식이 열리고(DB가 열릴 때) 다음에 씁니다. tblUserLogs
사용자 이름과 날짜 시간.그런 다음 데이터베이스가 닫히면 close 하위는 다음을 사용하여 동일한 레코드에 씁니다. UserLogID
올바른 기록을 보장하기 위해.명령을 실행하는 다른 양식의 버튼을 사용할 때까지는 훌륭하게 작동합니다. DoCmd.Quit acQuitPrompt
DB를 닫는 것입니다.이런 일이 발생하면 없습니다 timeOut
해당 레코드에 대해 입력되었습니다.메시지 상자가 표시되도록 할 수 있었습니다. Form_Close
SQL 문 앞에 있지만 SQL 문 뒤에 있으면 frmTimeKeeper에 이벤트가 발생하지 않습니다.Access를 종료하기 전에 다른 모든 양식을 깔끔하게 닫을 수 있는 방법이 있습니까?
tblUserLogs
참고로:
ID user timeIn timeOut
2 Evan 7/29/2014 3:41:58 PM 7/29/2014 3:42:11 PM
3 Evan 7/29/2014 3:42:50 PM 7/29/2014 3:42:57 PM
4 Evan 7/29/2014 3:43:10 PM 7/29/2014 3:43:22 PM
5 J 7/29/2014 3:45:06 PM 7/29/2014 3:46:35 PM
6 J 7/29/2014 3:46:57 PM 7/29/2014 3:47:20 PM
7 Evan 7/30/2014 7:16:43 AM 7/30/2014 7:17:49 AM
8 Evan 7/30/2014 7:36:56 AM 7/30/2014 7:38:56 AM
9 Evan 7/30/2014 10:42:36 AM 7/30/2014 10:42:42 AM
10 Evan 7/30/2014 10:51:56 AM 7/30/2014 10:52:06 AM
11 Evan 7/30/2014 10:55:07 AM
12 Evan 7/30/2014 11:05:25 AM 7/30/2014 11:05:42 AM
13 Evan 7/30/2014 11:06:00 AM
14 Evan 7/30/2014 11:07:20 AM
15 Evan 7/30/2014 11:08:21 AM
16 Evan 7/30/2014 11:14:42 AM
17 Evan 7/30/2014 11:17:50 AM 7/30/2014 11:18:02 AM
18 Evan 7/30/2014 11:19:28 AM
19 Evan 7/30/2014 11:23:06 AM 7/30/2014 11:23:08 AM
20 Evan 7/30/2014 11:23:55 AM 7/30/2014 11:24:22 AM
잃어버린 timeOut
값은 이 오류로 인해 발생합니다.
감사해요
해결책
DoCmd.Quit를 호출하는 버튼을 클릭하면 timeKeeper 양식이 수동으로 닫힙니다.좋다,
Private Sub yourOtherButtonName_Click()
DoCmd.Close acForm, "frm_TimeKeeper"
DoCmd.Quit
End Sub
제휴하지 않습니다 StackOverflow