엑세스 363p. 기본모의고사 7회 3.2번에서
private sub cmd결합검색_click()
if isnull(txt이름) then
msgbox "성을 입력하세요."
end if
end sub
과
엑셀 227p. 섹션18. 기본문제5.
private sub cmd등록_click()
if txt제품명="" then
msgbox "제품명을 입력하시오."
end if
end sub
에서 반대로 적용하면 왜 프로시저가 올바르게 작동되지 않는 건가요?
엑셀vb와 엑세스vb의 isnull이 다르게 작동하는 건가요?
아니면 '엑셀227p. 섹션18. 기본문제5.'의 'txt제품명'이 'lst제품목록과 연결되어 있어서 그런건가요?
ㅠㅠ
엑셀에서 isnull을 사용할 경우,
첫번째, 반응없음
private sub cmd등록_click()
if isnull(txt제품명) then
msgbox "제품명을 입력하시오."
end if
end sub
두번째, 반응없음
private sub cmd등록_click()
if isnull(txt제품명)=true then
msgbox "제품명을 입력하시오."
end if
end sub
세번째, 선택되든 안되든 msgbox실행
private sub cmd등록_click()
if isnull(txt제품명)=false then
msgbox "제품명을 입력하시오."
end if
end sub
안녕하세요.
엑셀이든 액세스이든 txt이름 컨트롤을 참조한다면 해당 컨트롤의 Text를 참조하는 것은 같습니다. 그런데 액세스는 txt이름을 참조했을 때는 단순한 컨트롤이 아니라 바운드된 필드를 찾게 됩니다. 그래서 필드의 초기값은 Null이므로 값을 입력하지 않은 것은 IsNull로 검사하는게 맞습니다. 그러나 엑셀은 바운드의 개념이 없으므로 txt이름을 참조해도 Text를 참조하게 됩니다. Text의 초기값은 0길이 문자열("")이므로 txt제품명 = ""으로 검사하는게 맞습니다.
즐거운 하루 되세요.
"-
*2012-12-27 11:00:19
안녕하세요.
엑셀이든 액세스이든 txt이름 컨트롤을 참조한다면 해당 컨트롤의 Text를 참조하는 것은 같습니다. 그런데 액세스는 txt이름을 참조했을 때는 단순한 컨트롤이 아니라 바운드된 필드를 찾게 됩니다. 그래서 필드의 초기값은 Null이므로 값을 입력하지 않은 것은 IsNull로 검사하는게 맞습니다. 그러나 엑셀은 바운드의 개념이 없으므로 txt이름을 참조해도 Text를 참조하게 됩니다. Text의 초기값은 0길이 문자열("")이므로 txt제품명 = ""으로 검사하는게 맞습니다.
즐거운 하루 되세요.
"