티스토리 뷰

Dim DR As OdbcDataReader = Nothing
Dim BUSI_NO = ""

strSql = ""
strSql &= vbCrLf & " SELECT BUSI_NO"
strSql &= vbCrLf & " FROM   TB_GRPINF"
strSql &= vbCrLf & " WHERE  BUSI_NO = '" & Replace(TextBox3.Text, "-", "") & "'"

DR = fncTranSelectDR(strSql, dbConn, dbTran)

DR.Read()
BUSI_NO = DR!BUSI_NO '여기에서 원하지 않은 데이터가 나온 이유는 WHERE 조건을 주지 않았기 때문이다. 

If BUSI_NO = Replace(TextBox3.Text, "-", "") Then
    MessageBox.Show("사업자번호가 이미 존재합니다. 다른 번호를 입력해주세요.")
    Return
End If

여기에서 중복된 데이터는 DR.Read() 해서 잘 들어가는데

이제 중복되지 않은 데이터는 읽지도 않은 채 종료되어 버린다. 

 

 

오류가 발생한 이유

주어진 코드에서 중복되지 않은 경우에 DR에서 값이 없어서 문제가 발생하는 이유는,

DR.Read() 메서드를 호출하기 전에 사업자번호에 해당하는 레코드가 없는 경우에도 DR.Read() 메서드를 실행하기 때문이다. 이 경우에는 DR에서 데이터를 읽을 수 없으므로 오류가 발생한다. 

 

 DR = fncTranSelectDR(strSql, dbConn, dbTran)

'DR.Read()
'BUSI_NO = DR!BUSI_NO '여기에서 원하지 않은 데이터가 나온 이유는 WHERE 조건을 주지 않았기 때문이다. 

If DR.Read() Then
    BUSI_NO = DR("BUSI_NO").ToString()
End If

DR.Close()

If BUSI_NO = Replace(TextBox3.Text, "-", "") Then
    MessageBox.Show("사업자번호가 이미 존재합니다. 다른 번호를 입력해주세요.")
    Return
End If

 

위의 코드에서 변경된 부분은 DR.Read() 호출 이후에 BUSI_NO를 읽는 부분이다. DR.Read()의 결과를 확인한 후에 데이터를 읽도록 수정했다. 따라서 중복된 경우에만 BUSI_NO 값을 비교하여 중복 여부를 확인하고, 중복되지 않은 경우에는 BUSI_NO 값이 비어있게 된다.

 

고쳐주니 중복이 되었든 중복이 되지 않았든 잘 데이터가 넘어간다. 

 

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함