2013-04-16 92 views
-1

我试图计算一列中所有数字的总和。一列中所有字段的总和

列名是'Units'类型的整数。

这应该有效吗?

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.dll 附加信息:在查询表达式'WHERE OnHold = 1 AND BookedOut IS NULL'中的语法错误(缺少运算符)发生在System.Data.dll 中的未处理的异常类型'System.Data.OleDb.OleDbException'。 – mjshort

+0

@ user2286005我错误地列出了两个'WHERE'。再试一次 – Taryn

+0

对不起,我是一只羊!用正确的代码我现在得到这个错误? 附加信息:标准表达式中的数据类型不匹配。 – mjshort