2011-01-28 4 views
0

이 코드는 작동하지 않습니다. 누구든지 나를 도울 수 있습니까?onLost focus 이벤트가 작동하지 않습니다. -ms access

Private Sub txtErrorComment_5_LostFocus() 

    If IsEmpty(Me.txtErrorComment_5) Then 
     MsgBox "Eh..! It cannot be Empty." 
    End If 

End Sub 
+1

"Empty"는 Variant 유형의 초기화되지 않은 변수의 경우 VB (A)에서 특별한 값입니다. 그것은 당신이 생각하는 것을 의미하지는 않습니다. – RolandTumble

+3

LostFocus가 이에 대한 잘못된 이벤트입니다. 대신 BeforeUpdate를 사용해야합니다. –

+0

@ David-W-Fenton : 들어보세요. – phoog

답변

1

txtErrorComment_5 아마 널입니다 - IsEmpty 함수를 실행할 때 False로 평가되는() - 예,이-않은 직관적이지만 널 비교할 때마다 결과가 false입니다.

는 다음과 같은 시도 :

Private Sub txtErrorComment_5_LostFocus() 

    If IsEmpty(Me.txtErrorComment_5) or IsNull(Me.txtErrorComment_5) Then 
     MsgBox "Eh..! It cannot be Empty." 
    End If 

End Sub 

또는 단지 :

Private Sub txtErrorComment_5_LostFocus() 

    If IsNull(Me.txtErrorComment_5) Then 
     MsgBox "Eh..! It cannot be Empty." 
    End If 

End Sub 

ISNULL은 널의

편집을 처리 할 수 ​​ 데이비드-W-펜톤 @

가 올바른지.

Private Sub txtErrorComment_5_BeforeUpdate(Cancel As Integer) 

    If IsNull(Me.txtErrorComment_5) Then 
     MsgBox "Eh..! It cannot be Empty." 
     Cancel=true 
    End If 

End Sub 
+0

나는 이미 이것을 시도했지만, 역시 작동하지 않았다. 실제로 내 양식에 확인란이 채워져 있으면이 텍스트 상자가 채워져 있어야합니다. 이 논리를 구현하는 다른 방법이 있습니까 ?? – user397316

+0

IsEmpty()는 컨트롤에서 유용한 정보를 반환하지 않습니다. Variant 데이터 형식의 변수를 사용하는 경우에만 값입니다. –

+1

@ David-W-Fenton : 컨트롤의 기본 속성은 Variant 형식입니다. Excel의 유사한 상황에서 IsEmpty()를 사용하여 편집되지 않은 셀을 확인합니다. Access에서 IsNull()을 사용합니다. 당신의 의견이 암시하는대로 영업 이익은 그다지 점수를 웃지 못했습니다. – phoog

1

이 txtErrorComment_5가 비어 있는지 여부를 감지하려면이 BeforeUpdate (안 LostFocus)을 수행하는 더 좋은 방법은, 그 값에 널 (null) 문자열을 연결하고, 조합 식의 문자 길이가 제로의 여부를 참조하십시오. 당신이 하나 이상의 공백 문자가 포함 된 경우 txtErrorComment_5가 빈 처리하려면

Private Sub txtErrorComment_5_LostFocus() 
    If Len(Me.txtErrorComment_5 & vbNullString) = 0 Then 
     MsgBox "Eh..! It cannot be Empty." 
    End If 
End Sub 

은 트림() 함수를 포함한다.

Private Sub txtErrorComment_5_LostFocus() 
    If Len(Trim(Me.txtErrorComment_5) & vbNullString) = 0 Then 
     MsgBox "Eh..! It cannot be Empty." 
    End If 
End Sub 
+0

이 기술은 매우 장황합니다. null 및 길이가 0 인 문자열을 모두 확인해야하는 경우 간단한 IsNullOrEmpty() 함수를 작성하는 것이 좋습니다. 그러나 기본적으로 Access에서는 길이가 0 인 문자열을 허용하지 않으므로 기본 제공 IsNull() 함수가 일반적으로 적합합니다. – phoog

+0

@phoog Access 2003과 2007에서 새 텍스트 필드를 만들 때 Zero Length 허용 속성은 Yes입니다. 해당 행동을 바꿀 수있는 방법이 있다면 공유하십시오. 각 새 텍스트 필드에 대해 해당 속성을 아니요로 변경하지 않아도됩니다. 감사. – HansUp

+0

이상한. 아마도 내 기억이 잘못 됐을까요? 제작 작업을 위해 Access 테이블을 만들었으므로 오래되었습니다. 그래서 많은 관심을 기울이지 않았습니다. 지금 사용중인 컴퓨터에 액세스 권한이 없습니다. 나는 다음 번에 내가 컴퓨터에있을 때 그것을 확인하려고 노력할 것이다. – phoog

관련 문제