문제

데이터베이스에 DAO 레코드 세트를 사용하여 꺼내는 옵션 필드가 있습니다. 다른 필드와 연결하기 전에 필드가 설정되어 있는지 확인해야합니다. 지금까지 나는 둘 다 시도한 다음 코드 스 니펫이 있습니다. Is 그리고 = (그것은 분명히 잘못된 구문입니다 [[Is | =]]) 아무 소용이 없습니다. 내가 사용하는 경우 = 올바르게 비교되지 않습니다 Null 그리고 내가 사용한다면 Is 그런 다음 객체와 비교하지 않는다고 불평합니다.

While Not rs.EOF
    If rs.Fields("MiddleInitial") [[Is | =]] Null Then thisMiddleInitial = "" Else thisMiddleInitial = rs.Fields("MiddleInitial")
    If prettyName(myLastName, myFirstName, myMiddleInitial) = prettyName(rs.Fields("LastName"), rs.Fields("FirstName"), thisMiddleInitial) Then
        MsgBox "Yay!"
    End If
    rs.MoveNext
Wend

더 간단한 방법이 있다면 나는 완전히 열려 있습니다. PrettyName은 3 개의 문자열을 매개 변수로 사용하고 처음에는 Rs.Fields ( "Middlename")를 직접 통과하려고했지만 널 값으로 던졌습니다. 나는 그런 직접적인 일을 선호하지만 이것이 내가 생각해 낼 수있는 최고입니다.

도움이 되었습니까?

해결책

어때요 :

IsNull(rs.Fields("MiddleInitial").Value)

당신은 또한 볼 수 있습니다 이 기사 Access VBA 앱의 NULL 값에 대한 설명과 처리 방법에 대한 설명이 있습니다.

다른 팁

당신이 보여주는 예에서는 뉴질랜드가 작동합니다.

    thisMiddleInitial = Nz(rs!MiddleInitial,"")

또는 단순히 문자열을 빈 문자열로 연결합니다.

    thisMiddleInitial = rs!MiddleInitial & ""

당신의 질문은 Remou에 의해 답변되었고, 나에게 보이지만, 당신은 단지 이름 필드를 적절히 연결하려고 할 수도 있습니다. 이 경우 VBA에서 Mid () 및 Null 전파를 사용하여 결과를 얻을 수 있습니다.

별도의 중간 초기 필드를 사용하지 않으므로 평소 이름 연결 공식은 다음과 같습니다.

Mid(("12" + LastName) & (", " + FirstName), 3)

마지막 이름이 무시되지 않고 무시되면 처음에 "12"문자열이 버려집니다. ~이다 + 연결 연산자가 Nulls를 전파하기 때문에 NULL.

이것을 중간에 포함하도록 이것을 확장하려면 다음과 같습니다.

Mid(("12" + LastName) & (", " + FirstName) & (" " + MiddleInitial), 3)

UDF가 닉네임/약어 등을 복잡하게 정리하지 않는다고 가정하면,이를 완전히 대체 할 수 있습니다.

If rst.Fields("MiddleInitial").Value = "Null" Then

이것은 나를 위해 작동합니다. MS SQL 데이터베이스를 사용합니다.

이 상황에서는 Nomatch 옵션이 작동 할 수 있다고 생각합니다.

rs.nomatch = true 인 경우

NULL 및 빈 문자열 값을 모두 설명하기 위해 아래를 사용하는 것이 좋습니다. 사용자로부터 값을 수집하는 양식을 사용하는 것은 사용하기에 좋은 점검입니다.

If Trim(rs.Fields("MiddleInitial") & "") = "" then
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top