我有以下代码来获取表格中列的总和。
dim sumX as new oledbcommand
sumX.commandtext = "Select sum(Xcolumn) from [Xtable] where id = "1234""
sumX.commandtype = commandtype.text
sumX.connection = con
Dim z as oledbdatareader = sumX.executereader
If z.read then
y = z.getvalue(0)
End if
上面的代码有效。我想知道如果上面的代码没有得到任何值(null),如果查询的结果为null,如何将y的值设置为零
答案 0 :(得分:1)
尝试将查询更改为:
Select IIf(sum(Xcolumn) Is Null,0,sum(Xcolumn)) from [Xtable] where id = "1234"
或者这个:
Select Nz(sum(Xcolumn), 0) from [Xtable] where id = "1234"
访问中有一个IIF功能,最好在查询中设置为0。
看看这是否有帮助
答案 1 :(得分:1)
我只是简化了您的代码以获得更高的性能。与Count()
或Sum()
等聚合函数一起使用非常有用。与ExecuteReader()
进行比较时,ExecuteScalar()
使用较少的系统资源
Dim sumX As New OleDbCommand
sumX.CommandText = "Select sum(Xcolumn) from [Xtable] where id = 1234"
sumX.CommandType = CommandType.Text
sumX.Connection = con
y = IIf(IsDBNull(sumX.ExecuteScalar), 0, sumX.ExecuteScalar)
SqlCommand Object中的ExecuteScalar() 用于在执行后从Database获取单个值。它执行SQL语句或 存储过程并在第一列的第一列返回标量值 结果集中的行。如果结果集包含多个 列或行,它只占第一行的第一列,全部 其他值将被忽略。如果结果集为空,则返回a 空引用。