2013-04-29 7 views
2

기본적으로 TimeIn을 사용하여 새 행을 만들기 전에 사용자가 현재 로그인했는지 확인하려고하지만 코드가 작성된 상태에서 사용자가 여러 번 체크인 할 수 있습니다. 체크 아웃 (TLog_TImeOut 필드가 null 임). 내 코드는 다음과 같습니다.DLookup Access 2010에서 IsNull 및 여러 기준 사용

If Not IsNull(DLookup("[TLog_TimeIn]", "TIMELOG", "IsNull(TLog_TImeOut)= True And NetID = '[TempVars]![CurrentID]'")) Then 
MsgBox ("Please Check out!") 
DoCmd.Close acForm, "CHECKIN", acSaveNo 
Exit Sub 
Else 
    NetID = [TempVars]![CurrentID] 
    TLog_TimeIn = Now() 
    MsgBox ("Thanks for checking in!") 
    DoCmd.Close acForm, "CHECKIN", acSaveYes 
Exit Sub 
End If 

답변

3

귀하의 DLOOKUP 이상과 같이해야한다 :

If Not IsNull(DLookup("[TLog_TimeIn]", "TIMELOG", "TLog_TimeOut Is Null And NetID = '" & Forms![TempVars]![CurrentID] & "'")) Then 

당신의 구체적인 조건 -

IsNull(TLog_TImeOut)= True And NetID = '[TempVars]![CurrentID]' 

SQL 문에서 WHERE 조건처럼 취급 할 필요가 있습니다.

첫째, 당신은 속도 이유로 액세스 기능 (없는이 특별한 경우에는 큰 문제가) 너무 Is Null를 사용하여 IsNull(XXX)=True보다 더 나은하지만, 특히이 부분 않도록하려면 가능한 경우 :

NetID = '[TempVars]![CurrentID]' 

이 진행됩니다 '! [TempVar] [CurrentID]'말 그대로 문자열로 NetID를 비교에 그래서 당신이 원하는 이런이 문자열을 구축하는 것입니다 :

NetID = '" & Forms![TempVars]![CurrentID] & "'" 

([TempVars] 가정하면 변수를 저장하는 데 사용하는 숨겨진 양식입니다 값)입니다. 해당 양식의 BOB는 다음과 같이 산출됩니다.

NetID = 'BOB' 

원하는 것은 무엇입니까?

+0

감사합니다. Dan !!!!! 그러나 TempVars는 액세스 2010에서 하나의 양식에서 다음 양식으로 변수를 전달할 수있는 함수입니다 ... 양식을 제거했습니다! 그리고 그것은 효과가 있었다! –

+0

좋아요! 당신들은 아이들과 당신의 새 것처럼 느껴지는 [TempVars] - 같은 날 숨겨진 양식을 사용하기 위해 눈 내리막 길을 걸어야했던 이유와 우리는 그것을 기꺼이했습니다! –