책 내용 질문하기
프로시저에 관한 질문입니다
도서
[2014] 컴퓨터활용능력 1급 실기(엑셀, 액세스 2007 사용자용)
페이지
443
조회수
59
작성일
2014-11-22
작성자
첨부파일

실전모의고사 B형 443p 문제 4의 2번 문제인데 제가 답을

Private Sub cmd등록_Click()
If IsNull(cmb제품명.Value) Then
MsgBox "제품명을 선택하세요.", , "제품명"
ElseIf txt수량 = "" Then
MsgBox "수량을 입력하세요.", , "수량"
Else
입력행 = [a4].Row + [a4].CurrentRegion.Rows.Count
참조행 = cmb제품명.ListIndex + 5
Cells(입력행, 1) = Cells(참조행, 7)
Cells(입력행, 2) = txt수량
Cells(입력행, 3) = Cells(참조행, 8)
Cells(입력행, 4) = Cells(참조행, 9)
Cells(입력행, 5) = txt수량 * Cells(참조행, 8)
End If
End Sub

이렇게 쓰니까 틀렸다고 나오네요

위에 굵게 한 파랑부분이 틀린 것 같던데 여기서 IsNull을 쓰면 왜 안되는가요?

답변
2014-11-24 11:51:34

액세스는 txt이름을 참조했을 때는 단순한 컨트롤이 아니라 바운드된 필드를 찾게 됩니다.

그래서 필드의 초기값은 Null이므로 값을 입력하지 않은 것은 IsNull로 검사하는게 맞습니다.

엑셀에서는 컨트롤에 등록된 내용을 바로 확인 하기 때문에 cmb제품명 = "" 와 같이 사용하는 것입니다.

lst 박스부분에서는 바운드된 값을 이용하기때문에 isnull을 사용하는 경우가 많구요.

어떻게 작성하시든 코드가 정상실행되어 정확한 결과가 나온다면 상관 없습니다.

좋은 하루 되세요.

"
  • *
    2014-11-24 11:51:34

    액세스는 txt이름을 참조했을 때는 단순한 컨트롤이 아니라 바운드된 필드를 찾게 됩니다.

    그래서 필드의 초기값은 Null이므로 값을 입력하지 않은 것은 IsNull로 검사하는게 맞습니다.

    엑셀에서는 컨트롤에 등록된 내용을 바로 확인 하기 때문에 cmb제품명 = "" 와 같이 사용하는 것입니다.

    lst 박스부분에서는 바운드된 값을 이용하기때문에 isnull을 사용하는 경우가 많구요.

    어떻게 작성하시든 코드가 정상실행되어 정확한 결과가 나온다면 상관 없습니다.

    좋은 하루 되세요.

    "
· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.