关于Table.Compute("Sum(qty)","XXX")的坑

   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);
                        }

  整个世界清静了。

posted @ 2018-08-29 11:07  老飞飞  阅读(646)  评论(0编辑  收藏  举报