naif radi Ответов: 2

Как заменить нулевые значения в инструкции select в SQL server с помощью VB.NET 2015 год


Привет,
Я получаю ошибку в своем коде, когда я хочу сохранить 0, если есть нулевое значение в функции sum в операторе select,в моем поле таблицы базы данных, не принимающем нулевые значения, и я даю значение по умолчанию 0.00.

Что я уже пробовал:

Я попытался использовать isnull(sum(field, 0))
Это код

SaveInto.CommandText = "UPDATE TrialBalance SET TransactionBalance = 
                                                (SELECT isnull(SUM(Dr_Acc_Value),0.00) As NullValue
                                                From JV_QRY
                                                GROUP BY Main_Gr_Code,JV_Year
                                                HAVING Main_Gr_Code = '" & Trim(Account_Code) & "'
                                                And JV_Year = '" & CurYear & "') 
                                                where Account = '" & Trim(Account_Code) & "'"

                                                If Not conn.State = ConnectionState.Open Then conn.Open()
                                                SaveInto.ExecuteNonQuery()

Richard MacCutchan

А ошибка есть?

naif radi

Ошибка заключается в следующем:
Не удается вставить NULL в столбец "имя столбца", столбец не допускает null, обновление завершается неудачно.

Richard MacCutchan

Попробуйте оператор SELECT сам по себе и посмотрите, какой результат вы получите.

CHill60

И не используйте сцепленные строки для создания командного текста ... вместо этого используйте параметризованные запросы.
Попробуйте использовать SUM(ISNULL(Dr_Acc_Value, 0.00)) As NullValue .. или если это один из других столбцов, то скажите нам, какое имя столбца было указано в сообщении об ошибке!!

naif radi

я попытался использовать "SUM(ISNULL(Dr_Acc_Value, 0.00)) Как NullValue", но когда я проверяю результат, он дает нулевые значения, если я позволяю полю принимать нулевые значения.

CHill60

Неужели? Я получил ноль, когда попробовал

naif radi

Да это действительно так, :)

CHill60

Учитывая, что SUM игнорирует нулевые значения, он не может вернуть NULL из SUM (ISNULL(Dr_Acc_Value, 0.00)), поэтому вы что-то неправильно набрали.
SUM (Transact-SQL)[^]

2 Ответов

Рейтинг:
2

naif radi

<pre>SaveInto.CommandText = "Update TrialBalance SET TransactionBalance = 
                                                ISNULL((SELECT SUM(Dr_Acc_Value)
                                                From JV_QRY
                                                Group By Main_Gr_Code, JV_Year
                                                HAVING Main_Gr_Code = '" & Trim(Account_Code) & "'
                                                And JV_Year = '" & CurYear & "'),0.00)
                                                where Account = '" & Trim(Account_Code) & "'"


Спасибо всем,

@pooranendu, ваше решение правильное, но скобка должна быть перед запятой, большое спасибо


Рейтинг:
12

pooranendu

Используйте ISNULL в outerstatement
любить

UPDATE TrialBalance SET TransactionBalance = 
                                                ISNULL((SELECT SUM(Dr_Acc_Value)
                                                From JV_QRY
                                                GROUP BY Main_Gr_Code,JV_Year
                                                HAVING Main_Gr_Code = '" & Trim(Account_Code) & "'
                                                And JV_Year = '" & CurYear & "',0.00)
                                                where Account = '" & Trim(Account_Code) & "'"