문제

양식을 사용하는 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
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top