머리에 벽을 두드리는 중입니다. 내가 VB6로 작성 오래된 데이터베이스보고 코드를보고 (코드는보고 데이터베이스에 "소스"데이터베이스에서 데이터를 이동)이 라인을 가로 질러왔다되었습니다Str()을 Null Recordset 필드와 함께 사용할 때 "Null 사용이 잘못되었습니다."하지만 Str (Null)이 정상적으로 작동합니다.
rsTarget!VehYear = Trim(Str(rsSource!VehYear))
rsSource!VehYear
이 Null
, 위의 라인 "Null 잘못된 사용"런타임 오류를 생성합니다. 나는 위의 줄에 중단하고 입력하면 직접 실행 창에서 다음
?rsSource!VehYear
이 Null
를 출력합니다. 좋아, 그건 의미가있다. 다음으로 오류를 재현 해 봅니다.
?Str(rsSource!VehYear)
"잘못된 Null 사용"오류가 발생합니다. 내가 직접 실행 창에 다음과 같이 입력하면
그러나 :
?Str(Null)
I 오류가 발생하지 않습니다. 단순히 Null
을 출력합니다.
Str()
대신 Trim()
과 동일한 실험을 반복하면 모든 것이 정상적으로 작동합니다. ?Trim(rsSource!VehYear)
은 ?Trim(Null)
과 마찬가지로 Null
을 반환합니다. 런타임 오류가 없습니다.
그래서, 내 질문은, 어떻게 Str(rsSource!VehYear)
가능성이 때 Str(Null)
, 때 rsSource!VehYear
가 Null
동일 것을 알고 하지 않는 오류에 "널의 잘못된 사용을"던질 수 있습니까?
업데이트 : 내가 직접 실행 창에 다음을 입력하면 예상대로 작동 (오류가 발생하지 않음) :
는?Str(rsSource!VehYear.Value)
이 Null
를 출력합니다. 이제 rsSource!VehYear
은 ADODB.Field
인스턴스이지만 실제로는 Value
이 기본 속성이므로 속성 (Null
)에서 Str
이 작동해야합니다. 심지어 오류 메시지 ("Null의 유효하지 않은 사용")은 Str
이 Null
매개 변수를 받고 있음을 나타내지 만 어떻게 Null
을 다른 경우가 아닌 다른 방법으로 처리 할 수 있습니까?
내 생각에 Str()
의 내부 구현은 기본 속성을 가져 오지 못하고 "다른 곳에서 Null 오류가 발생했습니다"오류가 발생합니다 (매개 변수 이외의 다른 것이 "잘못된 사용"을 유발 함). Null ", 아마도 Field
개체에서 기본 속성을 검색하려고 할 때).
여기 실제로 일어나는 일에 대해 더 자세한 기술 설명이있는 사람이 있습니까?
한마디로: rsSource!VehYear
이 Null
때
?Str(rsSource!VehYear)
오류에 "널의 잘못된 사용을"가 발생하지만,
?Str(rsSource!VehYear.Value)
반환 Null
.
그러나 Trim(rsSource!VehYear)
과 Trim(rsSource!VehYear.Value)
은 모두 Null
입니다.
그것은 물건을 깨끗하게합니다. 그건 그렇고, SimplyVBUnit 주셔서 감사합니다;) –