//列表 public static DataTable CreateView(string _selCol, string _strTestNo, int ab) { BLL.Compress bllts = new HR_Test.BLL.Compress(); DataSet dst = bllts.GetFinishList1(_selCol, " testNo = '" + _strTestNo + "' and isFinish=true", ab); return(dst.Tables[0]); }
//求取平均值 X~,S,V public static DataTable CreateAverageViewReport(StringBuilder _selCol, StringBuilder _selSqlAver, string _strTestSampleNo, int ab) { BLL.Compress bllts = new HR_Test.BLL.Compress(); //求平均 DataSet dsaver = bllts.GetFinishSumList1(_selSqlAver.ToString(), " testSampleNo in ('" + _strTestSampleNo + ") and isFinish=true and isEffective=false "); //获取选择试样的数量和试样编号 string selCol = _selCol.ToString(); DataSet dsfinish = bllts.GetFinishList1(selCol.ToString(), " testSampleNo in ('" + _strTestSampleNo + ") and isFinish=true and isEffective=false ", ab); int fcount = dsfinish.Tables[0].Rows.Count; //变异系数 = sd/mean StringBuilder strCV = new StringBuilder(); //中间值 StringBuilder strMid = new StringBuilder(); //创建新的数据计算结果表 DataSet dsaverto = new DataSet(); dsaverto.Tables.Add(); dsaverto.Tables[0].Columns.Add("数量(" + fcount + ")").SetOrdinal(0); for (int i = 0; i < dsaver.Tables[0].Columns.Count; i++) { dsaverto.Tables[0].Columns.Add(dsaver.Tables[0].Columns[i].Caption).SetOrdinal(i + 1); } //给新数据表添加平均值列 List <object> objmean = new List <object>(); objmean.Add("Mean.:"); for (int i = 0; i < dsaver.Tables[0].Columns.Count; i++) { if (double.Parse(dsaver.Tables[0].Rows[0][i].ToString()) != 0) { objmean.Add(dsaver.Tables[0].Rows[0][i].ToString()); } else { objmean.Add("-"); } } dsaverto.Tables[0].Rows.Add(objmean.ToArray()); double sumsd = 0; double sd = 0; double cv = 0; double ctrue = 0; double caver = 0; double temp = double.MaxValue; double mid = 0; List <object> objsd = new List <object>(); objsd.Add("S.D.:"); List <object> objcv = new List <object>(); objcv.Add("C.V.:"); List <object> objmid = new List <object>(); objmid.Add("Mid.:"); //计算标准偏差 for (int i = 0; i < dsaver.Tables[0].Columns.Count; i++) { for (int j = 0; j < dsfinish.Tables[0].Rows.Count; j++) { // 求和 (真实值-平均值)^2 if (ab == 1) { ctrue = Convert.ToDouble(dsfinish.Tables[0].Rows[j][i + 4].ToString()); } if (ab == 2) { ctrue = Convert.ToDouble(dsfinish.Tables[0].Rows[j][i + 3].ToString()); } caver = Convert.ToDouble(dsaver.Tables[0].Rows[0][i].ToString()); double c1 = (ctrue - caver) * (ctrue - caver); sumsd += c1; //查找中间值,最接近平均值的 double d_value = Math.Abs(ctrue - caver); if (d_value < temp) { temp = d_value; mid = ctrue; } } //标准偏差 if (fcount - 1 != 0) { sd = Math.Sqrt(sumsd / (fcount - 1)); } else { sd = 0; } //变异系数 =( 标准偏差 / 平均值 ) *100 if (caver != 0) { cv = (sd / caver) * 100; } else { cv = 0; } if (sd != 0) { objsd.Add(sd.ToString("f4")); } else { objsd.Add("-"); } if (cv != 0) { objcv.Add(cv.ToString("f4")); } else { objcv.Add("-"); } if (mid != 0) { objmid.Add(mid.ToString("f4")); } else { objmid.Add("-"); } temp = double.MaxValue; sumsd = 0; } //S.D.标准偏差行 if (_isSelSD) { dsaverto.Tables[0].Rows.Add(objsd.ToArray()); } //变异系数行 if (_isSelCV) { dsaverto.Tables[0].Rows.Add(objcv.ToArray()); } //中间值行 if (_isSelMid) { dsaverto.Tables[0].Rows.Add(objmid.ToArray()); } dsfinish.Dispose(); return(dsaverto.Tables[0]); }