项目为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 每次都要执行 确实很费时
------解决方案--------------------------------------------------------