2011-07-04 71 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也为了捕捉=) –