Example #1
0
 private double Evaluated(FColumn fcx, int columnstt, DataTable dt)
 {
     System.Collections.Hashtable h  = new System.Collections.Hashtable();
     Formula.BieuThuc             bt = new Formula.BieuThuc(fcx.FormulaColumn);
     foreach (string str in bt.variables)
     {
         bool kt = true;
         for (int j = 0; j < listFColumn.Count; j++)
         {
             FColumn fc = listFColumn[j];
             if (dt.Rows[fc.Rowstt]["MaSo"].ToString().ToUpper() == str.ToUpper() && fc.IsEvaluated == false)
             {
                 dt.Rows[fc.Rowstt][columnstt] = Evaluated(fc, columnstt, dt);
                 kt             = false;
                 fc.IsEvaluated = true;
                 h.Add(str, dt.Rows[fc.Rowstt][columnstt]);
                 break;
             }
         }
         if (kt == true)
         {
             for (int i = 0; i < dt.Rows.Count; i++)
             {
                 string MaSo = dt.Rows[i]["MaSo"].ToString();
                 if (str.ToUpper() == MaSo.ToUpper())
                 {
                     h.Add(str, dt.Rows[i][columnstt]);
                     break;
                 }
             }
         }
     }
     return(bt.Evaluate(h));
 }
Example #2
0
        public override void TinhGiatri()
        {
            if (YTPt.Count == 0)
            {
                return;
            }
            //dtkq.PrimaryKey = new DataColumn[] { dtkq.Columns["MaSP"] };
            Tongtien = _dbData.GetValueByStore("sopsKetChuyen", new string[] { "@tk", "@ngayct", "@ngayct1", "@psno" }, new object[] { tk, _Tungay, _Denngay, 0 }, new ParameterDirection[] { ParameterDirection.Input, ParameterDirection.Input, ParameterDirection.Input, ParameterDirection.Output }, 3);

            double     TongHeso = 0;
            string     BangDM   = "";
            string     TruongSP;
            string     TruongHSDC = "";
            DataTable  TbHSDC     = null;
            string     sql        = "";
            DataColumn col        = new DataColumn("HESO");

            col.DataType     = typeof(double);
            col.DefaultValue = 0.0;
            col.Caption      = "HESO";
            this.dtkq.Columns.Add(col);
            DataColumn col1 = new DataColumn("HSDC");

            col1.DataType     = typeof(double);
            col1.DefaultValue = 0.0;
            col1.Caption      = "HSDC";
            this.dtkq.Columns.Add(col1);
            if (dryt["BangDM"] != null && dryt["BangDM"].ToString().Trim() != "")
            {
                BangDM     = dryt["BangDM"].ToString();
                TruongSP   = dryt["TruongSP"].ToString();
                TruongHSDC = dryt["Heso"].ToString();
                sql        = "select * from " + BangDM + " where ngayct between '" + _Tungay.ToShortDateString() + "' and '" + _Denngay.ToShortDateString() + "'";
                TbHSDC     = _dbData.GetDataTable(sql);
                if (TbHSDC == null)
                {
                    return;
                }
                TbHSDC.PrimaryKey = new DataColumn[] { TbHSDC.Columns[TruongSP] };
                foreach (DataRow dr in dtkq.Rows)
                {
                    Hashtable h = new Hashtable();
                    foreach (Ytgt YT1 in YTPt)
                    {
                        DataRow tmp = YT1.Kq.Rows.Find(dr["masp"].ToString());
                        if (tmp != null)
                        {
                            h.Add(YT1.Name.ToUpper(), double.Parse(tmp[YT1.Name].ToString()));
                        }
                        else
                        {
                            h.Add(YT1.Name.ToUpper(), 0);
                        }
                    }
                    dr["HESO"] = bt.Evaluate(h);
                    DataRow drtmp;
                    drtmp = TbHSDC.Rows.Find(dr[TruongSP].ToString());
                    if (drtmp != null)
                    {
                        dr["HSDC"] = double.Parse(drtmp[TruongHSDC].ToString());
                    }
                    else
                    {
                        dr["HSDC"] = 0;
                    }
                    TongHeso += double.Parse(dr["HESO"].ToString()) * double.Parse(dr["HSDC"].ToString());
                }
            }
            else
            {
                foreach (DataRow dr in dtkq.Rows)
                {
                    Hashtable h = new Hashtable();
                    foreach (Ytgt YT1 in YTPt)
                    {
                        DataRow tmp = YT1.Kq.Rows.Find(dr["masp"].ToString());
                        if (tmp != null)
                        {
                            h.Add(YT1.Name.ToUpper(), double.Parse(tmp[YT1.Name].ToString()));
                        }
                        else
                        {
                            h.Add(YT1.Name.ToUpper(), 0);
                        }
                    }
                    dr["HESO"] = bt.Evaluate(h);
                    dr["HSDC"] = 1;
                    TongHeso  += double.Parse(dr["HESO"].ToString());
                }
            }
            foreach (DataRow dr in dtkq.Rows)
            {
                double heso = double.Parse(dr["HESO"].ToString());
                double HSDC = double.Parse(dr["HSDC"].ToString());
                dr[Name] = Tongtien * heso * HSDC / (TongHeso);
            }
            dtkq.Columns.Remove("Soluong");
            this.dtkq.Columns.Remove("HESO");
            this.dtkq.Columns.Remove("HSDC");
        }