2013-04-16 2 views
-1

Im пытается вычислить СУММ всех номеров в одном столбце.SUM всех полей в одном столбце

Название столбца - «Единицы» - тип в целых числах.

Это должно работать?

cmd3 = New OleDbCommand("SELECT SUM(Units) FROM tblJobs WHERE BookedOut = NULL AND HoldDate = NULL ", con) 

lblLiveUnits.Text = cmd3.ExecuteNonQuery() 

Спасибо

+1

Вы даже попробовали? – Sajeetharan

+3

ExecuteNonQuery вернет количество затронутых строк, а не результат. Используйте ExecuteScalar, если вы хотите, чтобы один элемент данных возвращался из запроса: http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executescalar.aspx – GrandMasterFlush

ответ

3

Ваш запрос не правильно, вы не хотите, чтобы сделать что-то =NULL вы должны использовать IS NULL:

SELECT SUM(Units) As TotalUnits 
FROM tblJobs 
WHERE BookedOut IS NULL 
    AND HoldDate IS NULL 

Тогда в вашем коде вы будете использовать ExecuteScalar:

Int32 lblLiveUnits = 0; 

cmd3 = New OleDbCommand("SELECT SUM(Units) As TotalUnits FROM tblJobs WHERE BookedOut IS NULL AND HoldDate IS NULL ", con); 

lblLiveUnits = cmd3.ExecuteScalar() 
+0

Благодарим за быстрый ответ! с новым кодом, который я знаю, получает эту ошибку. Необработанное исключение типа «System.Data.OleDb.OleDbException» произошло в System.Data.dll Дополнительная информация: Ошибка синтаксиса (отсутствующий оператор) в выражении запроса «WHERE OnHold = 1 AND BookedOut IS NULL». – mjshort

+0

@ user2286005 У меня неправильно было два 'WHERE's. Повторите попытку – Taryn

+0

Извините, что я был овцой! с правильным кодом i теперь получите эту ошибку? Дополнительная информация: несоответствие типа данных в выражении критериев. – mjshort

Смежные вопросы