zoukankan      html  css  js  c++  java
  • .NET下的并行开发(案例代码)

    以下主要是通过一个报表处理程序来说明并行开发的方式。对于数据冲突和共享,可以通过对象数组解决。设计到并行的核心代码已用红色标出。在并行程序的处理上,需要把原来串行的子公司变成一个一个类的对象,让所有的类对象一起并行运行就达到提高响应速率的目的了。并行设计中,主要的还是编程的思想,并行的语法,规则都是规划好的。好的工具就看你如何使用了。

    using System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    //using Excel = Microsoft.Office.Interop.Excel;
    using gcdb;
    using System.Data.Odbc;
    using gc;
    using ExcelQuicker.Framework;
    using System.IO;
    using System.Threading;
    using System.Threading.Tasks;
    using System.Data.SqlClient;

    namespace scbb
    {

        //企业营业额完成情况一览表
        //具体注释,请参考 建筑业总产值分类完成情况表
        // h 开头为海外项目统计参数
        //"企业营业额完成情况表.xls";//模板文件名称



        public class scbb_b7
        {
            string downExcelFile;

            string c_yhid, c_yhdw, c_xmmxf, c_sfgz, c_ddlb, c_yearmonth, c_yhjb, c_ybtime;
            int c_dlml;//是否存储到独立目录
            string yearmonth;
            string jibie;
            string year;
            string month;
            string ddlb;
          
          public   object[,] objDataExcel;
            System.Collections.Queue q = new Queue();
            System.Collections.Queue q2 = new Queue();

            protected string tbn(int n)
            {
                if (n <= 0 || n > 10)
                    return "";
                string[] bigNum = new string[] { "一", "二", "三", "四", "五", "六", "七", "八", "九", "十" };
                return bigNum[n - 1];

            }
            protected string toBigNumber(int num)
            {
                string b = "";
                if (num > 100 || num <= 0)
                    return "";
                if (num <= 10)
                    b = tbn(num);
                else if (num < 20)
                {
                    b = "十" + tbn(num % 10);
                }
                else
                {
                    b = tbn(num / 10) + "十" + tbn(num % 10);
                }

                b = b + "、";
                return b;
            }

            DB db = new DB();

            public void Initialize()
            {
                if (Directory.Exists(HttpRuntime.AppDomainAppPath + "ExcelQuicker\gf\" + c_ybtime.Substring(0, 7)) == false)
                {
                    Directory.CreateDirectory(HttpRuntime.AppDomainAppPath + "ExcelQuicker\gf\" + c_ybtime.Substring(0, 7));
                }
                EQConfiguration.XmlFileName = HttpRuntime.AppDomainAppPath + "ExcelQuicker\Lib\Message.xml";
                EQConfiguration.Language = "EN";
                if (c_dlml == 1)
                {
                    EQConfiguration.TemporaryFilePath = HttpRuntime.AppDomainAppPath + "ExcelQuicker\gf\";
                    EQConfiguration.OutputFilePath = HttpRuntime.AppDomainAppPath + "ExcelQuicker\gf\" + c_ybtime.Substring(0, 7) + "\";
                }
                else
                {
                    if (Directory.Exists(HttpRuntime.AppDomainAppPath + "ExcelQuicker\TempReports\" + c_yhdw.Substring(0, 4)) == false)
                    {
                        Directory.CreateDirectory(HttpRuntime.AppDomainAppPath + "ExcelQuicker\TempReports\" + c_yhdw.Substring(0, 4));
                    }
                    EQConfiguration.TemporaryFilePath = HttpRuntime.AppDomainAppPath + "ExcelQuicker\TempReports\" + c_yhdw.Substring(0, 4);
                    EQConfiguration.OutputFilePath = HttpRuntime.AppDomainAppPath + "ExcelQuicker\TempReports\" + c_yhdw.Substring(0, 4);
                }
                EQConfiguration.TemplateFilePath = HttpRuntime.AppDomainAppPath + "ExcelQuicker\Template\";

            }


            public void setSpeficedRange(int x0, int y0, int x1, int y1, EQWorksheet xlWorkSheet, string content)
            {
                string[,] dwfzr = new string[1, 1];  //建立二維數組對象
                dwfzr[0, 0] = content;
                EQRange range = new EQRange(dwfzr, x0, y0, x1, y1);
                range.MergeCells = true;
                xlWorkSheet.Add(range);

            }
            void set_Excel(string strFileName, string strTemplate, DwObject[] dwmobjdata)
            {

                OdbcDataReader tempOdr;
                EQApplication objApp = new EQApplication(strFileName, EQReportFormat.Excel, strTemplate, false);
                //objApp.AddOutputFile(strFileName, EQReportFormat.HTML);    //Command to output a html format report file at the same time
                EQWorksheet objWS = new EQWorksheet("报表数据");
                EQRange zrange = new EQRange(objDataExcel, 8, 1, 9, 140);
                zrange.AddStyle(EQStyleFactory.BlackAndGrayBorder);
                zrange.AddStyle(EQStyleFactory.OuterBorder);
                zrange.AddStyle(EQStyleFactory.AlignRight);
                zrange.Type = EQType.General;
                setRowColor(8, 19, 10, objWS);
                objWS.Add(zrange);
                EQRange[] range = new EQRange[dwmobjdata.Length];
                int sum = 0;
                int sun = 0;
                for (int p = 0; p < dwmobjdata.Length; p++)
                {

                    sum += dwmobjdata[p].objData .GetLength(0);
                    sun = sum - dwmobjdata[p].objData.GetLength(0);

                    range[p] = new EQRange(dwmobjdata[p].objData, 10+ sun, 1, 10 + sum - 1, 140);
                    range[p].Type = EQType.General;

                    //設置單元格整體風格
                    range[p].AddStyle(EQStyleFactory.BlackAndGrayBorder);
                    range[p].AddStyle(EQStyleFactory.OuterBorder);
                    range[p].AddStyle(EQStyleFactory.AlignRight); //設置所有單元格右對齊
                    //設置第一列左對齊
                    EQColumnStyle mycolumnstyle = new EQColumnStyle();
                    mycolumnstyle.SetColumnStyle(1, EQStyleFactory.AlignCenter);
                    mycolumnstyle.SetColumnStyle(2, EQStyleFactory.AlignLeft);
                    setRowColor(10 + sun, 19, 10, objWS);

                    objWS.Add(range[p]);
                    objWS.Add(mycolumnstyle);
                }




                //设置特定行的格式

                //设置表头部信息
                string sql_yhdw = "select dwmc from t_dw where dwid = '" + c_yhdw + "'";
                tempOdr = db.getReader(sql_yhdw);
                tempOdr.Read();
                string mydwmc = tempOdr.GetValue(0).ToString();//设置选定区域的文本,可用于设置填报公司
                mydwmc = "填报单位:" + mydwmc;
                tempOdr.Close();
                setSpeficedRange(4, 1, 4, 1, objWS, mydwmc);
                setSpeficedRange(3, 1, 3, 12, objWS, "单位建设项目主要实物工程量完成情况(" + c_ddlb + ")");
                string mytime = year + "年" + month + "月";
                setSpeficedRange(4, 6, 4, 7, objWS, mytime);
                //设置表尾信息
                FillIn(sum, objWS);
                objApp.Add(objWS);
                try
                {
                    objApp.Output();
                }
                catch (Exception)
                {
                    objApp.Dispose();
                    zdscbb.xrbbhcwcyy("b7", c_yhdw, c_xmmxf, c_sfgz, c_ddlb, c_ybtime, "Output Error");
                }
            }




            public void setRowColor(int rowNum, int colorIndex, int fontSize, EQWorksheet xlWorkSheet)
            {

                EQRowStyle mystyle = new EQRowStyle();
                EQRangeStyle mystyle2 = new EQRangeStyle();
                mystyle2.BackColor = colorIndex;
                mystyle2.Size = fontSize;
                //mystyle2.Bond = true;
                string endColumn1 = "e";   //结束时的列
                string endColumn2 = "j";  //结束时的列
                mystyle.SetRowStyle(rowNum, endColumn1, endColumn2, mystyle2);
                xlWorkSheet.Add(mystyle);
            }


            public int get_Count_From_Sql(string sql)
            {

                OdbcDataReader tempOdr;
                int tempNum;
                tempOdr = db.getReader(sql);
                tempOdr.Read();
                tempNum = int.Parse(tempOdr.GetValue(0).ToString());//公司数目
                tempOdr.Close();

                return tempNum;
            }






            public void xrbb(string cl_yhid, string cl_yhdw, string cl_xmmxf, string cl_sfgz, string cl_ddlb, string cl_yearmonth, string cl_yhjb, string cl_ybtime, int cl_dlml)
            {
                c_dlml = cl_dlml;
                c_yhid = cl_yhid;
                c_yhdw = cl_yhdw;
                c_xmmxf = cl_xmmxf;
                c_sfgz = cl_sfgz;
                c_ddlb = cl_ddlb;
                c_yearmonth = cl_yearmonth;
                c_yhjb = cl_yhjb;
                c_ybtime = cl_ybtime;
                string strFileName = "b7_" + c_yhdw + "_" + c_ddlb + c_xmmxf + c_ybtime + c_sfgz + ".xls";//生成的临时文件名称
                zdscbb.xrbbhc("b7", cl_yhdw, cl_xmmxf, cl_sfgz, cl_ddlb, cl_ybtime, strFileName);
                downExcelFile = "../ExcelQuicker/TempReports/" + strFileName;



                yearmonth = c_yearmonth;
                jibie = c_yhjb.ToString().Trim();
                ddlb = c_ddlb.ToString();
                year = yearmonth.Substring(0, 4);
                month = yearmonth.Substring(5, 2);

                int iMonth = Convert.ToInt32(month);

                if (iMonth < 10)
                    month = month.Substring(1, 1);

                ////项目数
                //string sql_xmmc_count1 = "select count(*) from (  select id,sgdw,xmmc,sfgz" + c_yhjb + ",ddlb  from T_gcxm where  (lrrq is null or year(lrrq)<" + year + " or (YEAR(lrrq)=" + year + " and MONTH(lrrq)<=" + month + "))and (xmjd<>'竣工'  or exists(select t_xmyb.id from t_xmyb,t_fgcid_xmid where year(ybsj)=" + year + " and t_fgcid_xmid.id=  xmid  and t_fgcid_xmid.fgcid= t_gcxm.id ) or year(jgrq)>=" + c_ybtime.Substring(0, 4) + " and xmjd='竣工')and" +
                //                " sgdw like'" + c_yhdw + "%'  or (sgdw like '" + c_yhdw + "%' and fgcid is null ) "
                //    +
                //     " union (select id,sgdw,xmmc,sfgz" + c_yhjb + ",ddlb from T_gcxm where (lrrq is null or year(lrrq)<" + year + " or (YEAR(lrrq)=" + year + " and MONTH(lrrq)<=" + month + "))and  (xmjd<>'竣工'  or exists(select t_xmyb.id from t_xmyb,t_fgcid_xmid where year(ybsj)=" + year + " and t_fgcid_xmid.id=  xmid  and t_fgcid_xmid.fgcid= t_gcxm.id ) or year(jgrq)>=" + c_ybtime.Substring(0, 4) + " and xmjd='竣工')and fgcid in (select id from T_gcxm where (xmjd<>'竣工'  or exists(select t_xmyb.id from t_xmyb,t_fgcid_xmid where year(ybsj)=" + year + " and t_fgcid_xmid.id=  xmid  and t_fgcid_xmid.fgcid= t_gcxm.id ) or year(jgrq)>=" + c_ybtime.Substring(0, 4) + " and xmjd='竣工')and  xmgldw = '" +
                //        c_yhdw + "' ) and sgdw !='" + c_yhdw + "') ) as table_name  where 1=1 ";


            string sql_xmmc_count=  " select count(*) from t_gcxm where (lrrq is null or year(lrrq)<" + year + " or (YEAR(lrrq)=" + year + " and MONTH(lrrq)<=" + month + "))and (xmjd<>'竣工' or exists(select t_xmyb.id from t_xmyb,t_fgcid_xmid where year(ybsj)=" + year + " and t_fgcid_xmid.id=  xmid  and t_fgcid_xmid.fgcid= t_gcxm.id )  or year(jgrq)>=" + c_ybtime.Substring(0, 4) + " and xmjd='竣工')";
                //所有项目
                string sql_xmmc = "select * from ( select id, xmmc, sgdw,sfgz" + c_yhjb + ",ddlb from T_gcxm where  (lrrq is null or year(lrrq)<" + year + " or (YEAR(lrrq)=" + year + " and MONTH(lrrq)<=" + month + "))and (xmjd<>'竣工' or exists(select t_xmyb.id from t_xmyb,t_fgcid_xmid where year(ybsj)=" + year + " and t_fgcid_xmid.id=  xmid  and t_fgcid_xmid.fgcid= t_gcxm.id )  or year(jgrq)>=" + c_ybtime.Substring(0, 4) + " and xmjd='竣工')and " +
                  " sgdw like'" + c_yhdw + "%' and ((sgdw <>'" + c_yhdw
                  + "' and fgcid is  null)or(sgdw ='";
               
                string sql_xmmc_part2 = "' )) " + " union (select id,xmmc, sgdw,sfgz" + c_yhjb + ",ddlb from T_gcxm where  (lrrq is null or year(lrrq)<" + year + " or (YEAR(lrrq)=" + year + " and MONTH(lrrq)<=" + month + "))and (xmjd<>'竣工' or exists(select t_xmyb.id from t_xmyb,t_fgcid_xmid where year(ybsj)=" + year + " and t_fgcid_xmid.id=  xmid  and t_fgcid_xmid.fgcid= t_gcxm.id )  or year(jgrq)>=" + c_ybtime.Substring(0, 4) + " and xmjd='竣工')and fgcid in (select id from T_gcxm where (xmjd<>'竣工' or exists(select t_xmyb.id from t_xmyb,t_fgcid_xmid where year(ybsj)=" + year + " and t_fgcid_xmid.id=  xmid  and t_fgcid_xmid.fgcid= t_gcxm.id )  or year(jgrq)>=" + c_ybtime.Substring(0, 4) + " and xmjd='竣工')and  xmgldw = '" + c_yhdw + "' ) and sgdw !='" + c_yhdw + "') ) as table_name where 1=1   ";

                //        土石方    隧道  桥梁(设计折合 米)     其中:大中桥        其中:立交、高架桥        正线铺轨(公里)    其中:高速    站线铺轨(公里)  铁路制梁(片)    铁路架梁(孔)    机械化整道(公里)    无砟轨道通信线路(公里)自动闭塞(区间公里)    电气集中(联锁道岔)    供电线路(公里)变配电所(站)    接触网(正线公里)    牵引变电所(处)    房屋施工面积    房屋竣工面积    地铁成洞(折合米)        地铁车站(座)        轻轨(折合米)        公路(折合公里)        其中:高速公路        其中:路面(平方米)        



                string sql_sum_klwc = " select sum(byxmzcz),sum(sw_tsf),sum(sw_sdsjcd),sum(sw_qlsjcd),sum(sw_dzq),sum(sw_ljgs),sum(tdq),sum(sw_tlzhxpg),sum(sw_gstl),sum(sw_tlzxpg),null,sum(sw_tljl),null,null,sum(sd_gdxl),sum(sd_bpds),sum(sd_jcw),sum(sd_qybds),sum(sd_txxl),sum(sd_xlgl),sum(sd_txsb),sum(sd_zdbs),sum(sd_dqjz),sum(fj_fwjzmj),sum(fj_fjzhmj),sum(fj_fjjgmj),sum(sw_dt),sum(sw_dtcz),sum(sw_qg),sum(sw_gl),sum(sw_gl_gs),sum(sw_gl_lm) from VIEW_YB_ALL where " +
                    "  (lrrq is null or year(lrrq)<" + year + " or (YEAR(lrrq)=" + year + " and MONTH(lrrq)<=" + month + "))and sgdw like'" + c_yhdw + "%'";

                //(a.bqswl <> 1) OR (a.bqswl IS NULL)
                //本年完成
                string sql_sum_bnwc = " select sum(byxmzcz),sum(sw_tsf),sum(sw_sdsjcd),sum(sw_qlsjcd),sum(sw_dzq),sum(sw_ljgs),sum(tdq),sum(sw_tlzhxpg),sum(sw_gstl),sum(sw_tlzxpg),null,sum(sw_tljl),null,null,sum(sd_gdxl),sum(sd_bpds),sum(sd_jcw),sum(sd_qybds),sum(sd_txxl),sum(sd_xlgl),sum(sd_txsb),sum(sd_zdbs),sum(sd_dqjz),sum(fj_fwjzmj),sum(fj_fjzhmj),sum(fj_fjjgmj),sum(sw_dt),sum(sw_dtcz),sum(sw_qg),sum(sw_gl),sum(sw_gl_gs),sum(sw_gl_lm) from VIEW_YB_XM where " +
                    " sgdw like'" + c_yhdw + "%' and  year(ybsj)= '" + year + "'" + " and month(ybsj)<= " + month + " ";

                //string subproject_yb = " or  fgcid in ( select xmid from view_yb_xm where sgdw like '" +c_yhdw + "%'  and  year(ybsj)= '" + year + "' ";

                if (c_sfgz.ToString() == "关注项目")
                {
                    sql_xmmc_count = sql_xmmc_count + " and sfgz" + c_yhjb + "=1";
                    sql_xmmc_part2 = sql_xmmc_part2 + " and sfgz" + c_yhjb + "=1";
                    sql_sum_klwc = sql_sum_klwc + " and sfgz" + c_yhjb + "=1";
                    sql_sum_bnwc = sql_sum_bnwc + " and sfgz" + c_yhjb + "=1";

                }
                if (c_sfgz.ToString() == "非关注项目")
                {
                    sql_xmmc_count = sql_xmmc_count + " and sfgz" + c_yhjb + "=0";
                    sql_xmmc_part2 = sql_xmmc_part2 + " and sfgz" + c_yhjb + "=0";
                    sql_sum_klwc = sql_sum_klwc + " and sfgz" + c_yhjb + "=0";
                    sql_sum_bnwc = sql_sum_bnwc + " and sfgz" + c_yhjb + "=0";

                }

                string sql_sum_klwc_total = sql_sum_klwc;
                string sql_sum_bnwc_total = sql_sum_bnwc;


                if (c_ddlb.ToString() == "海外")
                {
                    sql_xmmc_count = sql_xmmc_count + "and ddlb = '海外'";
                    sql_xmmc_part2 = sql_xmmc_part2 + "and ddlb = '海外'";
                    sql_sum_klwc = sql_sum_klwc + "and ddlb = '海外'";
                    sql_sum_bnwc = sql_sum_bnwc + "and ddlb = '海外'";

                }

                if (c_ddlb.ToString() == "国内")
                {
                    sql_xmmc_count = sql_xmmc_count + "and (ddlb = '省内' or ddlb = '省外')";
                    sql_xmmc_part2 = sql_xmmc_part2 + "and (ddlb = '省内' or ddlb = '省外')";
                    sql_sum_klwc = sql_sum_klwc + "and (ddlb = '省内' or ddlb = '省外')";
                    sql_sum_bnwc = sql_sum_bnwc + "and (ddlb = '省内' or ddlb = '省外')";
                }



                int cnum = 140;

                objDataExcel = new object[2, cnum];  //分配两行,一行显示总计数据,一行显示范围


                for (int i2 = 0; i2 < 2; i2++)
                {
                    for (int j2 = 0; j2 < cnum; j2++)
                        objDataExcel[i2, j2] = "";
                }



                objDataExcel[0, 1] = "总计";

              if (c_ddlb.ToString() == "国内" || c_ddlb.ToString() == "海外" || c_ddlb.ToString()=="全部")
                  objDataExcel[1, 1] = "  " + c_ddlb.ToString() + "项目计";

             
                //单位名称分类
                //支公司检阅信息
                string sql_dw_fid = "select id from t_dw  where dwid = '" + c_yhdw + "' ";  //查询单位的编号
                OdbcDataReader odr_dw_fid = db.getReader(sql_dw_fid);
                odr_dw_fid.Read();
              string   dw_fid = odr_dw_fid["id"].ToString ();
                odr_dw_fid.Close();



                string sql_dw = "select dwmc,dwid,dwjb,fdwid from t_dw where (dwid = '" + c_yhdw + "' or fdwid =  '" + dw_fid  + "' ) and bbxs is null order by dwxh";
            
               
                OdbcDataReader odr_dw = db.getReader(sql_dw);


            

             
                int dw_count = 0;    //记录总的单位数量
                string sql_dw_count2 = "select count(*) from t_dw where (dwid = '" + c_yhdw + "' or fdwid =  '" + dw_fid + "' ) and bbxs is null  ";
               
                OdbcDataReader odr = db.getReader(sql_dw_count2);
                odr.Read();
                dw_count = (int)odr[0];
                odr.Close();
                int dws = 0;//记录单位的数量
                string[] arry = new string[dw_count];//记录单位的编号

                while (odr_dw.Read())
                {
                    arry[dws] = odr_dw.GetValue(1).ToString();
                    dws++;
                }
                odr_dw.Close();
                DwObject[] dwmess = new DwObject[dw_count];

             
                Parallel.For(0, dw_count, (y) =>
                {
                    dwmess[y] = new DwObject();
                    dwmess[y].post( year,c_yhdw,sql_sum_bnwc, sql_xmmc_part2, sql_sum_klwc, sql_xmmc, c_xmmxf, c_yhjb,  c_ybtime, y, sql_xmmc_count);
                    dwmess[y].dws(arry[y]);
                  

                });


                /********************
                 *
                 * 统计总计数据
                 * *********************/
                if (c_yhjb.ToString() == "3")
                {
                    for (int z = 0; z < cnum; z++)
                    { objDataExcel[0, z] = ""; }
                }
                else
                {
                    double[] sum = new double[150];
                    for (int z = 2; z < cnum; z++)
                    {
                        for (int p = 0; p < dwmess.Length; p++)
                        {
                            if ( dwmess[p].objData[0, z].ToString() != "")
                                sum[z] += Convert.ToDouble(dwmess[p].objData[0, z]);

                        }

                        if (c_yhdw.ToString() != "gf" && dwmess[0].objData[0, z].ToString() != "")
                        {
                            sum[z] -= 2 * Convert.ToDouble(dwmess[0].objData[0, z]); /*分公司项目存在局指,项目重复显示*/
                        }
                        objDataExcel[0, z] = sum[z];


                    }
                }

             
                string strTemplate = "单位实物量统计表.xls";
                Initialize();//调用excel quicker初始化函数
                set_Excel(strFileName, strTemplate,dwmess );//生成并设置此excel表
                zdscbb.xrbbhcwc("b7", cl_yhdw, cl_xmmxf, cl_sfgz, cl_ddlb, cl_ybtime, strFileName);
            }

            private void FillIn(int num, EQWorksheet xlWorkSheet)
            {
                string sql_user = "select  dwfzr,tjfzr,yhmc,lxfs from t_user where yhid = '" + c_yhid + "'";

                OdbcDataReader odr_user = db.getReader(sql_user);
                odr_user.Read();

                int Allnum = num + 11;
                string[,] dwfzr = new string[1, 1];
                dwfzr[0, 0] = "单位负责人:" + odr_user.GetValue(0).ToString() + "          统计负责人:" + odr_user.GetValue(1).ToString() + "           填报人:" + odr_user.GetValue(2).ToString() + "          联系电话:" + odr_user.GetValue(3).ToString() + "          上报日期:" + DateTime.Today.ToShortDateString();
                EQRange range = new EQRange(dwfzr, Allnum, 1, Allnum, 10);

                range.MergeCells = true;
                range.AddStyle(EQStyleFactory.AlignCenter);






                xlWorkSheet.Add(range);

                odr_user.Close();
                //完成填报
            }


         
        }

      public class DwObject
        {
              int xmxh = 0;
              Hashtable ht;
            int row_position = 0;
            int control_col = 139;
            int gclb_row = 0;
            int zj_row = 0;
            int gnxm_row = 0;
            public int rnum = 0;
            public int cnum = 140;  // 列
            public object[,] objData;
            DB db = new DB();
            int flxh=0;   //工程项目序号
        
          
            //由scbb_b7中赋值后传过来的变量
            string sql_sum_bnwc = "";
           string sql_xmmc_part2 ="";
            string sql_sum_klwc = "";
            string sql_xmmc = "";
            string sql_xmmc_count;
            string c_xmmxf, c_yhjb, c_ybtime,c_yhdw,year;
            //在调用函数时要先赋值给他们
            public void post(string year1,string c_yhdw1,string sql_sum_bnwc1, string sql_xmmc_part21, string sql_sum_klwc1, string sql_xmmc1, string c_xmmxf1, string c_yhjb1, string c_ybtime1, int flxh1,string  sql_xmmc_count1)
            {
                c_yhdw=c_yhdw1;
                sql_sum_bnwc = sql_sum_bnwc1;
               sql_xmmc_part2 =sql_xmmc_part21;
                sql_sum_klwc = sql_sum_klwc1;
                sql_xmmc = sql_xmmc1;
                c_xmmxf = c_xmmxf1;
                c_yhjb = c_yhjb1;
                c_ybtime = c_ybtime1;
                flxh = flxh1;
                sql_xmmc_count= sql_xmmc_count1;
                  year=year1;

            }

            public int rnumber(string dwid, string sql_xmmc_count)
            {



                int gclb_count = 1;

                int gcxm_count = 0;  //记录具体的项目数量
                if (c_xmmxf == "True")    //是否显示明细
                {
                    // 统计行数
                    OdbcDataReader odr;
                     string sql_xmmc_count_dw = sql_xmmc_count + "and sgdw = '" + dwid + "'";
                      if (dwid == c_yhdw.ToString())

                   sql_xmmc_count_dw = sql_xmmc_count + "and sgdw = '" + dwid + "'";
                      else  
                      
                          sql_xmmc_count_dw = sql_xmmc_count + "and sgdw like '" + dwid + "%'";


                      odr = db.getReader(sql_xmmc_count_dw);       //工程项目行数
                      odr.Read();
                      gcxm_count = (int)odr[0];
                      odr.Close();

                      int zgc_count = 0;
                    /***********************************
                     * 对于股份公司,在求它空间的时候,应该去掉相应重复的跨单位工程
                     *
                     * *************************************/
                      if (c_yhdw.ToString() == "gf" && dwid != c_yhdw.ToString())   
                      {
                          //跨单位管理的工程将显示两遍,
                         
                          string sql_zgcxm = "select count(*) from T_gcxm where (xmjd<>'竣工' or exists(select t_xmyb.id from t_xmyb,t_fgcid_xmid where year(ybsj)=" + year + " and t_fgcid_xmid.id=  xmid  and t_fgcid_xmid.fgcid= t_gcxm.id )  or year(jgrq)>=" + c_ybtime.Substring(0, 4) + " and xmjd='竣工')and fgcid is not null and sgdw like'" + dwid + "%'";
                          odr = db.getReader(sql_zgcxm);
                          odr.Read();
                          zgc_count = (int)odr[0];
                          odr.Close();
                         

                      }

                      gcxm_count -= zgc_count;

                    //====================================================================统计子项目个数       
                        string odr_gcxm_gclb = "";
                        if (dwid == c_yhdw.ToString())
                            odr_gcxm_gclb = sql_xmmc + dwid + sql_xmmc_part2 + " and sgdw ='" + dwid + "' order by id desc";

                        else
                            odr_gcxm_gclb = sql_xmmc + dwid + sql_xmmc_part2 + " and sgdw like'" + dwid + "%' order by id desc";

                        OdbcDataReader odr_gcxm_count = db.getReader(odr_gcxm_gclb);



                        while (odr_gcxm_count.Read())
                        {
                            string s_sql_sfyzxm = "select isnull(fgcid,0) from t_gcxm where id=" + odr_gcxm_count.GetValue(0).ToString() + " ";
                            OdbcDataReader odr_zxm = db.getReader(s_sql_sfyzxm);
                            if (odr_zxm.Read())
                            {
                                if (odr_zxm[0].ToString() != "0" && dwid != c_yhdw)
                                {
                                    string sql1 = "select xmgldw,xmmc,id from T_gcxm where (xmjd<>'竣工' or exists(select t_xmyb.id from t_xmyb,t_fgcid_xmid where year(ybsj)=" + year + " and t_fgcid_xmid.id=  xmid  and t_fgcid_xmid.fgcid= t_gcxm.id )  or year(jgrq)>=" + c_ybtime.Substring(0, 4) + " and xmjd='竣工')and  id=(select fgcid from T_gcxm where (xmjd<>'竣工' or exists(select t_xmyb.id from t_xmyb,t_fgcid_xmid where year(ybsj)=" + year + " and t_fgcid_xmid.id=  xmid  and t_fgcid_xmid.fgcid= t_gcxm.id )  or year(jgrq)>=" + c_ybtime.Substring(0, 4) + " and xmjd='竣工')and id='" + odr_gcxm_count.GetValue(0).ToString() + "')";
                                    OdbcDataReader reader = db.getReader(sql1);
                                    while (reader.Read())
                                    {
                                        if (reader.GetValue(0).ToString() == dwid)
                                        {
                                            //表明当前项目的父项目的项目管理单位是用户单位
                                            string sql_zxm_count = "select count(*) from T_gcxm where (xmjd<>'竣工'  or exists(select t_xmyb.id from t_xmyb,t_fgcid_xmid where year(ybsj)=" + year + " and t_fgcid_xmid.id=  xmid  and t_fgcid_xmid.fgcid= t_gcxm.id ) or year(jgrq)>=" + c_ybtime.Substring(0, 4) + " and xmjd='竣工')and fgcid=(select fgcid from T_gcxm where (xmjd<>'竣工' or exists(select t_xmyb.id from t_xmyb,t_fgcid_xmid where year(ybsj)=" + year + " and t_fgcid_xmid.id=  xmid  and t_fgcid_xmid.fgcid= t_gcxm.id )  or year(jgrq)>=" + c_ybtime.Substring(0, 4) + " and xmjd='竣工')and id='" + odr_gcxm_count.GetValue(0).ToString() + "') ";
                                            OdbcDataReader odr_zxm_count = db.getReader(sql_zxm_count);
                                            odr_zxm_count.Read();
                                            gcxm_count += (int)odr_zxm_count[0];
                                            odr_zxm_count.Close();
                                        }

                                    }
                                    reader.Close();
                                }
                            }
                        }
                        odr_gcxm_count.Close();
                    }

                
                int total = gcxm_count  + gclb_count;
                return total;

            }




            
            protected string toBigNumber(int num)
            {
                string[] bigNum = new string[] { "", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二", "十三", "十四", "十五", "十六", "十七", "十八", "十九", "二十" };
                if (num > 0 && num <= 20)
                    return bigNum[num] + "、";
                else
                    if (num < 100)
                    {
                        return bigNum[num / 10] + bigNum[num % 10 + 10] + "、";
                    }
                    else
                        return "";
            }

          
          public object[,] dws(string dwid)
            {

                rnum = rnumber(dwid,sql_xmmc_count );
                objData = new object[rnum, cnum];
                for (int i2 = 0; i2 < rnum; i2++)
                {
                    for (int j2 = 0; j2 < cnum; j2++)
                        objData[i2, j2] = "";
                }
                
                gclb_row = row_position;
               
              string sql_dw = "select dwmc from t_dw where dwid = '" + dwid + "'";
                OdbcDataReader odr_dw = db.getReader(sql_dw);
                string dwmc = "";
                odr_dw.Read();
                dwmc = odr_dw.GetValue(0).ToString();
                odr_dw.Close();
                objData[row_position, 0] = toBigNumber(flxh + 1);   //计量单位的编号,序号为生成的对象
                objData[row_position, 1] = dwmc;
                    //记录分类位置

                 //   q.Enqueue(row_position);

                    string sql_sum_bnwc_gclb = "";
                    if (dwid == c_yhdw.ToString())
                        sql_sum_bnwc_gclb = sql_sum_bnwc + "and sgdw = '" + dwid + "'";  // //工程分类
                    else
                        sql_sum_bnwc_gclb = sql_sum_bnwc + "and sgdw like '" + dwid + "%'";  // //工程分类
                 
                    OdbcDataReader odr_sum_gclb_bnwc;//= db.getReader(sql_sum_bnwc_gclb);

                    //同一类别项目总计行本年完成
                    // odr_sum_gclb_bnwc.Read();

                  int   n = 1;
                  int   k = 1;

                    while (n < control_col)
                    {

                        objData[row_position, n + 1] = "";// odr_sum_gclb_bnwc.GetValue(k).ToString(); //在range中的位置 (1,1)
                        n += 3;
                        k++;
                    }
                    string sql_sum_klwc_gclb = "";
                    if (dwid == c_yhdw.ToString())
                        sql_sum_klwc_gclb = sql_sum_klwc + "and sgdw = '" + dwid + "'";  //
                    else
                        sql_sum_klwc_gclb = sql_sum_klwc + "and sgdw like '" + dwid + "%'";  //
                    OdbcDataReader odr_sum_gclb_klwc;// = db.getReader(sql_sum_klwc_gclb);

                    //同一类别项目总计行开累完成
                    // odr_sum_gclb_klwc.Read();
                int   m = 3;
                int   i = 1;
                    while (m < control_col + 1)
                    {
                        objData[row_position, m] = "";// odr_sum_gclb_klwc.GetValue(i).ToString(); //在range中的位置 (1,1)
                        m += 2;
                        i++;
                    }


                    row_position++;

                    //不同项目 列循环

                    string odr_gcxm_gclb = "";
                    //if(Session["yhjb"].ToString()=="3")
                    //    odr_gcxm_gclb = sql_xmmc;
                    //  else
                    if (dwid == c_yhdw.ToString())
                        odr_gcxm_gclb = sql_xmmc + dwid + sql_xmmc_part2 + " and sgdw ='" + dwid + "' order by id desc";

                    else
                        odr_gcxm_gclb = sql_xmmc + dwid + sql_xmmc_part2 + " and sgdw like'" + dwid + "%' order by id desc";

                    //odr_gcxm_gclb = sql_xmmc + dwid + sql_xmmc_part2 + " and sgdw ='" + dwid + "' order by id desc";
                    OdbcDataReader odr_gcxm = db.getReader(odr_gcxm_gclb);



                    //gclb = 3;
                    ht = new Hashtable();
                    while (odr_gcxm.Read())    //同一单位,不同项目循环
                    {
                        int i_sfjs;//标志是改项目数据是否参与总计行的合计。
                        i_sfjs = 0;


                        string s_xmid;
                        s_xmid = odr_gcxm.GetValue(0).ToString();
                        string s_sql_sfyzxm = "select isnull(fgcid,0) from t_gcxm where id=" + s_xmid + " ";
                        OdbcDataReader odr_zxm = db.getReader(s_sql_sfyzxm);
                        if (odr_zxm.Read())
                        {
                            if (odr_zxm[0].ToString() == "0" || dwid == c_yhdw)
                                i_sfjs = 1;

                        }
                        odr_zxm.Close();


                        if (check_is_xmgldw(odr_gcxm.GetValue(0).ToString(), dwid))//检查当前项目是不是项目管理单位,传递项目id和单位id
                        {
                            continue;
                        }
                        //填写项目序号
                        xmxh++;
                        if (c_xmmxf.ToString() == "True")
                        {
                            objData[row_position, 0] = xmxh;


                            objData[row_position, 1] = "" + odr_gcxm.GetValue(1).ToString();   //项目名称
                        }
                        //同一项目列循环的本年完成

                        //存储过程返回的是---年累产值  type=2
                        //
                        string sql_sum_bnwc_gclbtemp = "p_sum_yb_cz_swl_dw  " + odr_gcxm.GetValue(0).ToString() + " , '"
                                    + c_ybtime.ToString().Trim() + "'," + c_yhjb
                                    + ", 2";          //

                        odr_sum_gclb_bnwc = db.getReader(sql_sum_bnwc_gclbtemp);

                        odr_sum_gclb_bnwc.Read();

                        n = 2;
                        k = 1;

                        while (n < control_col)  //同一项目列循环的本年完成
                        {
                            if (c_xmmxf.ToString() == "True")
                            {
                                objData[row_position, n + 1] = odr_sum_gclb_bnwc.GetValue(k).ToString(); //在range中的位置 (1,1)
                            }
                            decimal d_gclb = 0, d_gcxm = 0, d_zj = 0;
                            if (objData[gclb_row, n + 1].ToString() != "")
                                d_gclb = Convert.ToDecimal((objData[gclb_row, n + 1]));
                            if (objData[zj_row, n + 1].ToString() != "")
                                d_zj = Convert.ToDecimal((objData[zj_row, n + 1]));
                            //if (objData[gnxm_row, n + 1].ToString() != "")
                            //    d_gnxm = Convert.ToDecimal((objData[gnxm_row, n + 1]));
                            if (odr_sum_gclb_bnwc.GetValue(k).ToString() != "")
                                d_gcxm = Convert.ToDecimal(odr_sum_gclb_bnwc.GetValue(k));



                            if (d_gcxm + d_gclb != 0 || d_gcxm != 0)
                                objData[gclb_row, n + 1] = (d_gcxm + d_gclb).ToString();
                            if (d_gcxm + d_zj != 0 && i_sfjs == 1)
                                objData[zj_row, n + 1] = (d_gcxm + d_zj).ToString();
                            // if (d_gcxm + d_gnxm != 0)
                            //     objData[gnxm_row, n + 1] = (d_gcxm + d_gnxm).ToString();
                            n += 3;
                            k++;
                        }
                        odr_sum_gclb_bnwc.Close();
                        //同一项目列循环的   开累完成
                        //存储过程返回的是---开累产值  type=3
                        //
                        string sql_sum_klwc_gclbtemp = "p_sum_yb_cz_swl_dw  " + odr_gcxm.GetValue(0).ToString() + " , '"
                                    + c_ybtime.ToString().Trim() + "'," + c_yhjb
                                    + ", 3";          //

                        odr_sum_gclb_klwc = db.getReader(sql_sum_klwc_gclbtemp);

                        odr_sum_gclb_klwc.Read();

                        m = 4;
                        i = 1;
                        while (m < control_col + 1)//同一项目列循环的开累完成
                        {
                            if (c_xmmxf.ToString() == "True")
                            {
                                objData[row_position, m] = odr_sum_gclb_klwc.GetValue(i).ToString(); //在range中的位置 (1,1)
                            }
                            /*  d_zj     总计行
                             *  d_gnxm   国内项目或海外项目行 总计值
                             *  d_gclb   工程类别行
                             */

                            decimal d_gclb = 0, d_gcxm = 0, d_zj = 0;

                            if (objData[gclb_row, m].ToString() != "")
                                d_gclb = Convert.ToDecimal((objData[gclb_row, m]));
                            if (objData[zj_row, m].ToString() != "")
                                d_zj = Convert.ToDecimal((objData[zj_row, m]));
                            //if (objData[gnxm_row, m].ToString() != "")
                            //    d_gnxm = Convert.ToDecimal((objData[gnxm_row, m]));
                            if (odr_sum_gclb_klwc.GetValue(i).ToString() != "")
                                d_gcxm = Convert.ToDecimal(odr_sum_gclb_klwc.GetValue(i).ToString());

                            if (d_gcxm + d_gclb != 0 || d_gcxm != 0)
                                objData[gclb_row, m] = (d_gcxm + d_gclb).ToString();
                            if (d_gcxm + d_zj != 0 && i_sfjs == 1)
                                objData[zj_row, m] = (d_gcxm + d_zj).ToString();
                            // if (d_gcxm + d_gnxm != 0)
                            //     objData[gnxm_row, m] = (d_gcxm + d_gnxm).ToString();

                            m += 3;
                            i++;
                        }
                        odr_sum_gclb_klwc.Close();

                        //同一项目列循环的本月完成
                        string sql_sum_bywc_gclbtemp = "p_sum_yb_cz_swl_dw  " + odr_gcxm.GetValue(0).ToString() + " , '"
                                  + c_ybtime.ToString().Trim() + "'," + c_yhjb
                                  + ", 1";          //

                        OdbcDataReader odr_sum_gclb_bywc = db.getReader(sql_sum_bywc_gclbtemp);

                        odr_sum_gclb_bywc.Read();

                        m = 2;
                        i = 1;
                        while (m < control_col + 1)//同一项目列循环的开累完成
                        {
                            if (c_xmmxf.ToString() == "True")
                            {
                                objData[row_position, m] = odr_sum_gclb_bywc.GetValue(i).ToString(); //在range中的位置 (1,1)
                            }
                            /*  d_zj     总计行
                             *  d_gnxm   国内项目或海外项目行 总计值
                             *  d_gclb   工程类别行
                             */

                            decimal d_gclb = 0, d_gcxm = 0, d_zj = 0;

                            if (objData[gclb_row, m].ToString() != "")
                                d_gclb = Convert.ToDecimal((objData[gclb_row, m]));
                            if (objData[zj_row, m].ToString() != "")
                                d_zj = Convert.ToDecimal((objData[zj_row, m]));
                            // if (objData[gnxm_row, m].ToString() != "")
                            //    d_gnxm = Convert.ToDecimal((objData[gnxm_row, m]));
                            if (odr_sum_gclb_bywc.GetValue(i).ToString() != "")
                                d_gcxm = Convert.ToDecimal(odr_sum_gclb_bywc.GetValue(i).ToString());

                            if (d_gcxm + d_gclb != 0 || d_gcxm != 0)
                                objData[gclb_row, m] = (d_gcxm + d_gclb).ToString();
                            if (d_gcxm + d_zj != 0 && i_sfjs == 1)
                                objData[zj_row, m] = (d_gcxm + d_zj).ToString();
                            // if (d_gcxm + d_gnxm != 0)
                            //     objData[gnxm_row, m] = (d_gcxm + d_gnxm).ToString();

                            m += 3;
                            i++;
                        }
                        odr_sum_gclb_bywc.Close();
                        if (c_xmmxf.ToString() == "True")
                        {
                            row_position = row_position + 1;
                        }




                    }  //while (odr_gcxm.Read())    //同一类别,不同项目循环     
                    odr_gcxm.Close();
                   // rnum = row_position;
                    return objData;
                   
                }   
              
              
                //设置队列中单元格字体


                //for (int i2 = 0; i2 < rnum; i2++)
                //    for (int j = 0; j < cnum; j++)
                //    {
                //        if (j == 1 || j == 0)
                //            continue;
                //        if (objData[i2, j] != null && objData[i2, j].ToString() != "")
                //            objData[i2, j] = decimal.Parse(objData[i2, j].ToString());
                //    }

                //以下处理房屋施工面积,房屋竣工面积
                //  for (int i2 = 0; i2 < rnum; i2++)
                // {
                //     objData[i2, 75] = objData[i2, 74];
                //     objData[i2, 74] = "";
                //objData[i2, 82] = objData[i2, 80];
                //objData[i2, 81] = objData[i2, 80];
                //objData[i2, 39] = objData[i2, 38];
                // objData[i2, 40] = objData[i2, 38];
                // objData[i2, 39] = Convert.ToDouble(objData[i2, 38].ToString() != "" ? objData[i2, 38].ToString() : "0") - Convert.ToDouble(objData[i2, 43].ToString() != "" ? objData[i2, 43].ToString() : "0") + Convert.ToDouble(objData[i2, 42].ToString() != "" ? objData[i2, 42].ToString() : "0");//房屋设计面积 - 开累竣工面积+本年竣工面积;
                //  if (objData[i2, 39].ToString() == "0")
                //      objData[i2, 39] = "";
                //  objData[i2, 40] = objData[i2, 38];
                //  objData[i2, 38] = "";
                //  }
                //清除3级单位的总计行,三级单位总计计算有误,而且也不需要总计
             
            bool check_is_xmgldw(string xmid, string dwid)
            {
                //if (Session["yhdw"].ToString() != dwid)
                //     return;
                bool flag = false;
                string xmmc = "";
                string fxmid = "";
                string sql1 = "select xmgldw,xmmc,id from T_gcxm where (xmjd<>'竣工' or exists(select t_xmyb.id from t_xmyb,t_fgcid_xmid where year(ybsj)=" + year + " and t_fgcid_xmid.id=  xmid  and t_fgcid_xmid.fgcid= t_gcxm.id )  or year(jgrq)>=" + c_ybtime.Substring(0, 4) + " and xmjd='竣工')and  id=(select fgcid from T_gcxm where (xmjd<>'竣工' or exists(select t_xmyb.id from t_xmyb,t_fgcid_xmid where year(ybsj)=" + year + " and t_fgcid_xmid.id=  xmid  and t_fgcid_xmid.fgcid= t_gcxm.id )  or year(jgrq)>=" + c_ybtime.Substring(0, 4) + " and xmjd='竣工')and id='" + xmid + "')";
                OdbcDataReader reader = db.getReader(sql1);
                while (reader.Read())
                {
                    if (reader.GetValue(0).ToString() == dwid)
                        flag = true;//表明当前项目的父项目的项目管理单位是用户单位
                    xmmc = reader.GetValue(1).ToString();
                    fxmid = reader.GetValue(2).ToString();
                }

                reader.Close();

                if (flag)
                {
                    if (!ht.Contains(fxmid))
                    {
                        ht.Add(fxmid, "");
                    }
                    else
                    {
                        return flag;
                    }
                    if (c_xmmxf.ToString() == "True")
                    {
                       // q2.Enqueue(row_position);
                        objData[row_position, 1] = "" + xmmc;
                        gnxm_row = row_position;
                        row_position++;
                    }
                    string sql = "select id,xmmc from T_gcxm where (xmjd<>'竣工'  or exists(select t_xmyb.id from t_xmyb,t_fgcid_xmid where year(ybsj)=" + year + " and t_fgcid_xmid.id=  xmid  and t_fgcid_xmid.fgcid= t_gcxm.id ) or year(jgrq)>=" + c_ybtime.Substring(0, 4) + " and xmjd='竣工')and fgcid=(select fgcid from T_gcxm where (xmjd<>'竣工' or exists(select t_xmyb.id from t_xmyb,t_fgcid_xmid where year(ybsj)=" + year + " and t_fgcid_xmid.id=  xmid  and t_fgcid_xmid.fgcid= t_gcxm.id )  or year(jgrq)>=" + c_ybtime.Substring(0, 4) + " and xmjd='竣工')and id='" + xmid + "') ";
                    reader = db.getReader(sql);
                    while (reader.Read())
                    {
                        int i_hj;
                        i_hj = 0;
                        if (xmid == reader.GetValue(0).ToString() && dwid == c_yhdw)
                            i_hj = 1;//项目管理单位参与合计
                        fill_zxm(reader.GetValue(0).ToString(), reader.GetValue(1).ToString(), i_hj);
                    }
                    reader.Close();
                }


                return flag;

            }
            //填充子项目
            void fill_zxm(string xmid, string xmmc, int sfhj)
            {




                //填写项目序号
                xmxh++;
                if (c_xmmxf.ToString() == "True")
                {
                    objData[row_position, 0] = xmxh;


                    objData[row_position, 1] = "" + xmmc;   //项目名称
                }
                //同一项目列循环的本年完成
                //   string sql_sum_bnwc_gclbtemp = " select sum(byxmzcz),sum(sw_tsf),sum(sw_sdsjcd),sum(sw_qlsjcd),sum(sw_dzq),sum(sw_ljgs),sum(sw_tlzhxpg),sum(sw_gstl),sum(sw_tlzxpg),sum(sw_tlzl),sum(sw_tljl),sum(sw_jxhzd),sum(sw_wzgd),sum(sd_txxl) ,sum(sd_zdbs),sum(sd_dqjz),sum(sd_gdxl),sum(sd_bpds),sum(sd_jcw),sum(sd_qybds),sum(fj_fwjzmj),sum(fj_fjjgmj),sum(sw_dt),sum(sw_dtcz),sum(sw_qg),sum(sw_gl),sum(sw_gl_gs),sum(sw_gl_lm),sum(sw_gljl) " +

                //存储过程返回的是---年累产值  type=2
                //
                string sql_sum_bnwc_gclbtemp = "p_sum_yb_cz_swl_dw  " + xmid + " , '"
                            + c_ybtime.ToString().Trim() + "'," + c_yhjb
                            + ", 2";          //

                OdbcDataReader odr_sum_gclb_bnwc = db.getReader(sql_sum_bnwc_gclbtemp);

                odr_sum_gclb_bnwc.Read();

                int n = 2;
                int k = 1;

                while (n < control_col)  //同一项目列循环的本年完成
                {
                    if (c_xmmxf.ToString() == "True")
                    {
                        objData[row_position, n + 1] = odr_sum_gclb_bnwc.GetValue(k).ToString(); //在range中的位置 (1,1)
                    }
                    decimal d_gclb = 0, d_gcxm = 0, d_gnxm = 0, d_zj = 0;
                    if (objData[gclb_row, n + 1].ToString() != "")
                        d_gclb = Convert.ToDecimal((objData[gclb_row, n + 1]));
                    if (objData[zj_row, n + 1].ToString() != "")
                        d_zj = Convert.ToDecimal((objData[zj_row, n + 1]));
                    if (objData[gnxm_row, n + 1].ToString() != "")
                        d_gnxm = Convert.ToDecimal((objData[gnxm_row, n + 1]));
                    if (odr_sum_gclb_bnwc.GetValue(k).ToString() != "")
                        d_gcxm = Convert.ToDecimal(odr_sum_gclb_bnwc.GetValue(k).ToString());



                    if (d_gcxm + d_gclb != 0 || d_gcxm != 0)
                        objData[gclb_row, n + 1] = (d_gcxm + d_gclb).ToString();
                    if ((d_gcxm + d_zj != 0 || d_gcxm != 0) && sfhj == 1)
                        objData[zj_row, n + 1] = (d_gcxm + d_zj).ToString();
                    if (d_gcxm + d_gnxm != 0 || d_gcxm != 0)
                        objData[gnxm_row, n + 1] = (d_gcxm + d_gnxm).ToString();
                    n += 3;
                    k++;
                }
                odr_sum_gclb_bnwc.Close();
                //同一项目列循环的   开累完成
                //存储过程返回的是---开累产值  type=3
                //
                string sql_sum_klwc_gclbtemp = "p_sum_yb_cz_swl_dw  " + xmid + " , '"
                            + c_ybtime.ToString().Trim() + "'," + c_yhjb
                            + ", 3";          //

                OdbcDataReader odr_sum_gclb_klwc = db.getReader(sql_sum_klwc_gclbtemp);

                odr_sum_gclb_klwc.Read();

                int m = 4;
                int i = 1;
                while (m < control_col + 1)//同一项目列循环的开累完成
                {
                    if (c_xmmxf.ToString() == "True")
                    {
                        objData[row_position, m] = odr_sum_gclb_klwc.GetValue(i).ToString(); //在range中的位置 (1,1)
                    }
                    /*  d_zj     总计行
                     *
                     */

                    decimal d_gclb = 0, d_gcxm = 0, d_gnxm = 0, d_zj = 0;

                    if (objData[gclb_row, m].ToString() != "")
                        d_gclb = Convert.ToDecimal((objData[gclb_row, m]));
                    if (objData[zj_row, m].ToString() != "")
                        d_zj = Convert.ToDecimal((objData[zj_row, m]));
                    if (objData[gnxm_row, m].ToString() != "")
                        d_gnxm = Convert.ToDecimal((objData[gnxm_row, m]));
                    if (odr_sum_gclb_klwc.GetValue(i).ToString() != "")
                        d_gcxm = Convert.ToDecimal(odr_sum_gclb_klwc.GetValue(i).ToString());

                    if (d_gcxm + d_gclb != 0 || d_gcxm != 0)
                        objData[gclb_row, m] = (d_gcxm + d_gclb).ToString();
                    if ((d_gcxm + d_zj != 0 || d_gcxm != 0) && sfhj == 1)
                        objData[zj_row, m] = (d_gcxm + d_zj).ToString();
                    if (d_gcxm + d_gnxm != 0 || d_gcxm != 0)
                        objData[gnxm_row, m] = (d_gcxm + d_gnxm).ToString();

                    m += 3;
                    i++;
                }
                odr_sum_gclb_klwc.Close();


                //同一项目列循环的本月完成
                string sql_sum_bywc_gclbtemp = "p_sum_yb_cz_swl_dw  " + xmid + " , '"
                          + c_ybtime.ToString().Trim() + "'," + c_yhjb
                          + ", 1";          //

                OdbcDataReader odr_sum_gclb_bywc = db.getReader(sql_sum_bywc_gclbtemp);

                odr_sum_gclb_bywc.Read();

                m = 2;
                i = 1;
                while (m < control_col + 1)//同一项目列循环的开累完成
                {
                    if (c_xmmxf.ToString() == "True")
                    {
                        objData[row_position, m] = odr_sum_gclb_bywc.GetValue(i).ToString(); //在range中的位置 (1,1)
                    }
                    /*  d_zj     总计行
                     *
                     */

                    decimal d_gclb = 0, d_gcxm = 0, d_gnxm = 0, d_zj = 0;

                    if (objData[gclb_row, m].ToString() != "")
                        d_gclb = Convert.ToDecimal((objData[gclb_row, m]));
                    if (objData[zj_row, m].ToString() != "")
                        d_zj = Convert.ToDecimal((objData[zj_row, m]));
                    if (objData[gnxm_row, m].ToString() != "")
                        d_gnxm = Convert.ToDecimal((objData[gnxm_row, m]));
                    if (odr_sum_gclb_bywc.GetValue(i).ToString() != "")
                        d_gcxm = Convert.ToDecimal(odr_sum_gclb_bywc.GetValue(i).ToString());

                    if (d_gcxm + d_gclb != 0 || d_gcxm != 0)
                        objData[gclb_row, m] = (d_gcxm + d_gclb).ToString();
                    if ((d_gcxm + d_zj != 0 || d_gcxm != 0) && sfhj == 1)
                        objData[zj_row, m] = (d_gcxm + d_zj).ToString();
                    if (d_gcxm + d_gnxm != 0 || d_gcxm != 0)
                        objData[gnxm_row, m] = (d_gcxm + d_gnxm).ToString();

                    m += 3;
                    i++;
                }
                odr_sum_gclb_bywc.Close();
                if (c_xmmxf.ToString() == "True")
                {
                    row_position = row_position + 1;
                }




            }
          
        }
        }

  • 相关阅读:
    第三周作业
    #第四周作业
    第十二周作业
    第十一周作业
    第九周作业
    第八周作业
    2019第七周作业
    第三次实验报告及第五次课程总结
    第二次课程总结&学习总结
    第三周实验和学习总结
  • 原文地址:https://www.cnblogs.com/wlandwl/p/prollodomo.html
Copyright © 2011-2022 走看看