2016-02-04 76 views
1

如果從Access SQL查詢中找到的結果字段爲空,則以下函數將引發異常。Access SQL查詢返回空白記錄時防止出現異常

如果查詢變成空的,我只想retvalue =無,但我得到一個錯誤,說我不能給一個字符串賦一個空值。所以我把它放在一個catch中,但catch會滯後於應用程序,因爲這個函數經常被使用,並且查詢結果通常是空的。

一個例子的情況是:

checkRecord(「註釋」,「表1」,「名」,「史蒂夫」)

該函數返回備註字段的記錄與頭名錶1中的「Steve」的值。如果Steve的筆記是空的(他們通常是),則該函數將拋出關於將字符串轉換爲空的異常。

我該如何聲明retvalue =無,如果返回的數據庫記錄是空的,而不必做一個捕獲?

Public Shared Function CheckRecord(Table As String, refcol As String, refcolvalue As String, targetcol As String) 


     Dim retvalue As String 

     Using cn As New OleDbConnection(mystr) 
      cn.Open() 
      Dim custCMDcr As OleDb.OleDbCommand = New OleDb.OleDbCommand("SELECT [" & targetcol & "] FROM [" & Table & "] WHERE [" & refcol & "] =" & refcolvalue) 


      custCMDcr.Connection = cn 



      Try 
      retvalue = CType(custCMDcr.ExecuteScalar(), String).ToString 

      Catch fail As Exception 
       retvalue = Nothing 
      End Try 



      Return retvalue 



     End Using 





    End Function 
+0

使用IsDbNull測試返回值 – Plutonix

回答

0

使用isDBNULL測試結果的工作,謝謝!

If IsDBNull(custCMDcr.ExecuteScalar()) Then 
    retvalue = Nothing 
else 
    (rest of code) 
end if