如果select query返回NULL,则设置变量值0

时间:2015-10-08 03:19:36

标签: sql vb.net ms-access

我有以下代码来获取表格中列的总和。

 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的值设置为零

2 个答案:

答案 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   空引用。