当前位置: 代码迷 >> .NET报表 >> VS2008 水晶表格打印慢-求泰哥
  详细解决方案

VS2008 水晶表格打印慢-求泰哥

热度:7287   发布时间:2013-02-25 00:00:00.0
VS2008 水晶报表打印慢-求泰哥
项目为C/S模式,报表使用的是水晶报表。打印速度巨慢(第一次加载1分钟)。每次打印的数据量不大(200多条)。开发思路为:将所有要打印的数据,存储在。XSD中,填充数据集文件,通过报表专家将报表文件的数据源指定为。XSD的一个表,我的代码如下
C# code
 ds_jieY myds = new ds_jieY();      //数据集对象。XSD                cp_jieY myreport = new cp_jieY();  //报表文件            //借阅报表数据初始化            try            {                DataRow dr_jyr;                dr_jyr = myds.Tables["JYR"].NewRow();                dr_jyr["jieyr"] = jyr;                dr_jyr["jieyrq"] = rq;                dr_jyr["yinhsj"] = Convert.ToString(rq.AddDays(Convert.ToInt16(ts)));                dr_jyr["jieydw"] = dw;                dr_jyr["jieyyy"] = yy;                dr_jyr["tel"] = tel;                myds.Tables["JYR"].Rows.Add(dr_jyr);                if (list_jiey.Items.Count > 0)                {                    string strSql_JY = "";                    DataRow dr_jyba;                    string[] str = new string[3];                    for (int i = 0; i < list_jiey.Items.Count; i++)                    {                        str = list_jiey.Items[i].ToString().Split('、');                        strSql_JY = "select bingabh,chuykb,bingrxm,chuyrq from view_search2 where bingabh='" + str[0] + "'and subhosp=" + subhosp + "";                        dt_ba = DbHelperSQL.Query(strSql_JY).Tables[0];                        if (dt_ba.Rows.Count > 0)                        {                            dr_jyba = myds.Tables["JYBA"].NewRow();                            dr_jyba["bingabh"] = dt_ba.Rows[0]["bingabh"].ToString().Trim();                            dr_jyba["chuykb"] = dt_ba.Rows[0]["chuykb"].ToString();                            dr_jyba["chuyrq"] = dt_ba.Rows[0]["chuyrq"].ToString();                            dr_jyba["bingrxm"] = dt_ba.Rows[0]["bingrxm"].ToString();                            myds.Tables["JYBA"].Rows.Add(dr_jyba);                        }                    }                    list_jiey.Items.Clear();                    myreport.SetDataSource(myds);                    crpView_jieY.ReportSource = myreport;//crpView_jieY 为crystalreportviewer 控件                    crpView_jieY.PrintReport();                }                            }            catch (Exception ex)            {                this.Cursor = Cursors.Default;                MessageBox.Show("系统错误:" + ex.ToString(), "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);                return;            }


个人感觉是控件加载的问题
高手指点一下,是我的代码有问题,还是别的原因。。。跪求高手给出答案

------解决方案--------------------------------------------------------
sf 顶
------解决方案--------------------------------------------------------
200多条数据,对水表来说不是问题,
关键还是得优化你的程序吧。

你这个 if (list_jiey.Items.Count > 0)如果满足
就执行一次检索数据,200多次数据库打开、关闭检索才要命

优化下程序吧

------解决方案--------------------------------------------------------
200条数据算是很少了,你最好在不同的位置上,加一个时间的跟踪。
看下到底慢在哪个环节。
------解决方案--------------------------------------------------------
list_jiey.Items.Count > 0 每次都要执行 确实很费时
------解决方案--------------------------------------------------------
探讨
200条数据算是很少了,你最好在不同的位置上,加一个时间的跟踪。
  相关解决方案