none
'wb1' 함수가 일부 코드 경로에 대해서만 값을 반환합니다 RRS feed

  • 질문

  • Imports System.Data.OleDb
    Imports ADODB

    Module 경인함수
        Function wb1(건구온도 As Double) '입구습구온도
            Dim adoConn As ADODB.Connection
            Dim adoRS As ADODB.Recordset
            Dim ConnectionString As String
            Dim dbfile, mysql, serch_id As String

            adoConn = New ADODB.Connection

            adoRS = New ADODB.Recordset()

            dbfile = "D:\VB\공조기선정\ACCDB\경인_data.accdb"

            ConnectionString = "PROVIDER=Microsoft.ACE.OLEDB.12.0; DATA SOURCE='" & dbfile & "'"

            adoConn.Open(ConnectionString)

            'DB가 연결 되었다면
            If adoConn.State = 1 Then
                mysql = "select * from " + "온도표_상대습도"
                adoRS.Open(mysql, adoConn)

                adoRS.MoveFirst()                                 

                For I = 1 To 251                                  
                    serch_id = Val(Format(adoRS(1).Value, "#.#0"))
                    If serch_id = Val(건구온도) Then                  
                        wb1 = adoRS(2).Value
                        Exit For
                    End If '다음 레코드
                Next I
            End If

            adoConn.Close()  
            adoConn = Nothing
            adoRS = Nothing  

        End Function

    ('wb1' 함수가 일부 코드 경로에 대해서만 값을 반환합니다.

    이 결과를 사용하면 런타임에 null 참조 예외가 발생할 수 있습니다.)

    왜 그렇까요

    End Module

    2013년 4월 12일 금요일 오전 10:20

답변

  • Function 일 경우 값이 반환되는데요, 실제 소스에서는 아래 부분의 코드에서 wb1 이 반환되는데 나머지 조건에서는 반환되지 않습니다.

    그래서 발생하는 오류입니다.

      If serch_id = Val(건구온도) Then                  
                        wb1 = adoRS(2).Value
                        Exit For
                    End If '다음 레코드

    그래서 아래와 같은 식으로 변경하실수 있습니다.

    Dim result as Double

    result =0

      If serch_id = Val(건구온도) Then                   
                         result = adoRS(2).Value
                        Exit For
      End If '다음 레코드

        Next I
            End If

            adoConn.Close()  
            adoConn = Nothing
            adoRS = Nothing  

    wb1=result


    Hong-ju

    • 답변으로 표시됨 박희철 2013년 4월 15일 월요일 오후 11:24
    2013년 4월 15일 월요일 오전 4:26

모든 응답

  • Function 일 경우 값이 반환되는데요, 실제 소스에서는 아래 부분의 코드에서 wb1 이 반환되는데 나머지 조건에서는 반환되지 않습니다.

    그래서 발생하는 오류입니다.

      If serch_id = Val(건구온도) Then                  
                        wb1 = adoRS(2).Value
                        Exit For
                    End If '다음 레코드

    그래서 아래와 같은 식으로 변경하실수 있습니다.

    Dim result as Double

    result =0

      If serch_id = Val(건구온도) Then                   
                         result = adoRS(2).Value
                        Exit For
      End If '다음 레코드

        Next I
            End If

            adoConn.Close()  
            adoConn = Nothing
            adoRS = Nothing  

    wb1=result


    Hong-ju

    • 답변으로 표시됨 박희철 2013년 4월 15일 월요일 오후 11:24
    2013년 4월 15일 월요일 오전 4:26
  • 해결 되었습니다.

    감사 합니다.

    2013년 4월 15일 월요일 오후 11:24