当前位置:编程学习 > C#/ASP.NET >>

求教高手,2000可以2005不行,System.Data.ReadOnlyException: 列为只读

求教高手

public static decimal GetPRFStorage(string part_id, string lot_no, DateTime delivery_datetime)
{
            if (_data == null) return 0;
            string n = "part_id='" + part_id + "' and lot_no='" + lot_no + "' and dlv_datetime<=#" + delivery_datetime.ToString("yyyy-MM-dd HH:mm:ss") + "# and dlv_qty>0";
            DataRow[] drs = _data.Select("part_id='" + part_id + "' and lot_no='" + lot_no + "' and dlv_datetime<=#" + delivery_datetime.ToString("yyyy-MM-dd hh:mm:ss") + "# and dlv_qty>0", "dlv_datetime desc,dlv_qty asc");
            decimal inpq = 0;
            if (drs.Length <= 0) inpq= 0; 
            foreach (DataRow dr in drs)
            {
                inpq += Convert.ToDecimal(dr["dlv_qty"]);
                dr["dlv_qty"] = 0;
            }

            decimal fln = 0;
            DataRow[] drf = _data_fl.Select("part_id='" + part_id + "' and lot_no='" + lot_no + "'");
            if (drf.Length <= 0)
            {
                fln = 0;
            }
            else
            {
                fln = Convert.ToDecimal(drf[0]["dlv_qty"]);
            } 
            return inpq + fln;
}

2009-12-15 14:43:27:546|Error|WW2864|运行R.C.000J16-0402-G00时出错!ex:System.Data.ReadOnlyException: 列“dlv_qty”为只读。
   在 System.Data.DataRow.set_Item(DataColumn column, Object value)
   在 System.Data.DataRow.set_Item(String columnName, Object value)
   在 Andafa.Amrp.PRFInstorageNew.GetPRFStorage(String part_id, String lot_no, DateTime delivery_datetime)
   在 Andafa.Amrp.PRCombMo.DiluteStorage(IPRMBom mbom, PRMtrHandleType handleType, List`1 lstMsBom, Decimal& needDiluteNum)
   在 Andafa.Amrp.PRCombMo.RunPRForEachMtr(IPRMBom mbom) --------------------编程问答-------------------- 检查一下你生成 _data  的代码看看 --------------------编程问答-------------------- 可能是因为连接还没有关闭,所以不允许修改DataRow里面的值。

我是刚刚遇到的这个问题。google找到的这个帖子,可惜没有答案。

还是自己摸索吧。 --------------------编程问答-------------------- 你是不是使用的

DataTable.Load(dr)的方法读取的记录呢?我是这么读取的,出现的这个错误,换成 DataAdapter.Fill(dt)就可以了。

具体原因还没有查看。 --------------------编程问答-------------------- 不明白你的2000代表什么2005代表什么?
能描述清楚你的问题吗?
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,