decimal totalOnway = 0.0M;
if (dtonway != null)
{
DataRow[] grdrs = dtonway.Select("PartNO='" + dr_MaterialInfo["PartNo"].ToString() + "'");
foreach (DataRow grdr in grdrs)
{
totalOnway += Convert.ToDecimal(grdr["doqty"].ToString());
}
//totalOnway = Convert.ToDecimal(dtonway.Compute("Sum(doqty)",
// "PartNO='" + dr_MaterialInfo["PartNo"].ToString() + "'"));
}
1)开始的时候是上面的程序,一直正常工作。
2)某天看见上面的程序觉得很蠢,就顺手修改为下面备注部分的程式
于是就出错了。
3)仔细找原因,最后发现是有的时候会找不到符合条件的数据的时候Compute出来的数据是DBNull
4)最终使用下面的解决方案
object obj= dtonway.Compute("Sum(doqty)",
"PartNO='" + dr_MaterialInfo["PartNo"].ToString() + "'");
if(obj!=DBNull.Value)
{
totalOnway = Convert.ToDecimal(obj);
}
整个世界清静了。