Ошибка строкового запроса - PullRequest
1 голос
/ 04 июля 2011

Я делаю запрос в коде.Но я получил ошибку преобразования.Пожалуйста, проверьте мою ошибку.

Мой запрос ниже

        Dim strSelect As String = ""

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

Исключительная ошибка похожа на

Преобразование из строки "iif (CurCons = 0") в тип'Double' недействителен

На самом деле, в моем отчете я хочу показать, равен ли он нулю, тогда '-'. Если я установил его в этой строке. Я получил другую ошибку, как показано ниже

Поставщик не может определить десятичное значение. Например, строка была только что создана, значение по умолчанию для столбца «Десятичное число» недоступно, и потребитель еще не установил новое десятичное значение.

От da.Fill

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

Как это решить?

Ответы [ 2 ]

3 голосов
/ 04 июля 2011
strSelect = "SELECT " & _                                            
            "Description As [Desc], " & _
            "IIF(CurCons = 0 OR ISNULL(CurCons), ' - ', CStr(CurCons)) As [CCQty] " & _
            "FROM tblCur"

Вы все еще находитесь в запросе SQL, когда выполняете оператор IIF, поэтому вы не хотите использовать символы " для строк, вместо этого вы будете использовать '.

Вашему отчету понадобится поле, в котором выводится значение, для установки типа текста, в противном случае вы увидите ошибку.

2 голосов
/ 04 июля 2011

Вы используете двойные кавычки для цитирования строки, а также для кавычки "-". Это не будет работать, потому что закрывает строку, поэтому дефис интерпретируется буквально как оператор вычитания. Вы должны попробовать что-то вроде:

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

Использует одинарные кавычки для тире.

...