2012-02-09 2 views
-2

Я хотел бы получить сумму столбца из базы данных, но запрос возвращает -1. У меня есть этот запрос:Получение суммы столбца в WinForms

SELECT SUM(total) 
FROM bon 
WHERE   
    (DATEPART(dd, data_adaugare) = DATEPART(dd, @p1)) 
    AND (DATEPART(mm, data_adaugare) = DATEPART(mm, @p1)) 
    AND (DATEPART(yy, data_adaugare) = DATEPART(yy, @p1)) 

и код из C#:

decimal sumaa = 0; 
DataTable suma = bonTableAdapter.Suma(DateTime.Now); 

foreach (DataRow r in suma.Rows) 
{ 
    sumaa += Convert.ToDecimal(r.ItemArray[0]); 
} 
+0

Если вы измените свой запрос на 'select total' вместо' select sum (total) 'и запустите его в своей СУБД, какой результат вы видите? –

+0

Я не понимаю! Почему люди дают отрицательный голос? –

ответ

1

в любой записи может быть пустым. В этом случае используйте это.

+0

правильный синтаксис ISNULL (SUM (total), 0), но все же это не желаемый результат. sumaa равно -1 ... –

+2

@EmilDumbazu: НЕТ, прочитайте ответ. Синтаксис, предложенный Муйтабой Хасаном, даст вам лучший ответ. Ваш синтаксис проверяет, является ли весь результат СУММЫ NULL (чего он не будет); его версия суммирует непустые элементы. –

+0

(И серьезно, попробуйте прочитать ответ и понять его, а не менять его, а затем сказать, что это неправильно. Люди пытаются помочь вам здесь!) –

2

вы недостающий общий столбец +

decimal sumaa = 0; 
    DataTable suma = bonTableAdapter.Suma(DateTime.Now); 
    foreach (DataRow r in suma.Rows) 
    { 
     sumaa += Convert.ToDecimal(r.ItemArray[0]); 
    } 
+0

Да, это проблема в коде, размещенном здесь, но это совсем не проблема. –

+0

@ EmilDumbazu, конечно. без '+' он ничего не суммирует. – Shai

+0

Возможно, у меня не было лучшего утверждения в моем комментарии, но + существует в моем коде! –

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