2011-07-04 95 views
1

我在編碼中進行查詢。但是我得到了轉換錯誤。請檢查我的錯。字符串查詢錯誤

我的查詢低於

 Dim strSelect As String = "" 

     strSelect = "SELECT " & _            
        "Description As [Desc], " & _ 
        "iif(CurCons = 0, " - ", CurCons) As [CCQty] " & _ 
        "FROM tblCur" 

異常錯誤就像是從字符串

轉換 「IIF(CurCons = 0」,鍵入 '雙' 無效

實際上,在我的報告中,我想表明它是否爲零,然後' - '。如果我把它設置在這個字符串中,我得到了另一個錯誤,如下面

供應商無法確定 十進制值。例如,行 剛剛創建, 十進制列的默認值不可用,並且 消費者尚未設置新的 十進制值。

從da.Fill

Dim cmd As New OleDbCommand(strDynamic, m_DBConn) 
     Dim da As New OleDbDataAdapter(cmd) 
     da.Fill(ds, "tblCur") 

如何解決這個問題?

回答

3
strSelect = "SELECT " & _            
      "Description As [Desc], " & _ 
      "IIF(CurCons = 0 OR ISNULL(CurCons), ' - ', CStr(CurCons)) As [CCQty] " & _ 
      "FROM tblCur" 

您仍然在SQL查詢時,您正在做的IIF語句,所以你不希望使用字符串字符,而不是您將使用

你報告將需要輸出值的字段設置爲文本類型,否則您將看到一個錯誤。

+0

是的,在編碼方面,應該是單引號。首先我很困惑它使數據類型匹配。現在,我還在格式對象的顯示字符串的報告中設置了'IIF({dtDynamic.CCQty} =「0」,「 - 」,{dtDynamic.CCQty})'。謝謝你們。 – soclose

2

您正在使用雙引號引用字符串以及引用"-"。這不起作用,因爲它關閉了字符串,所以t他的破折號字面上被解釋爲減法操作符。你應該嘗試這樣的:

"iif(CurCons = 0, '-', CurCons) As [CCQty] " & _ 

這使用單引號的短劃線。

+1

+1也爲了捕捉=) –