水晶报表首次启动慢解决方案及表内框线微调设计方法

简介:     VS加水晶报表一些问题让人真的很头疼,这里记录两个问题与大家共勉。 一、水晶报表首次启动慢,启动过一次后正常的问题。     这个问题确实存在,同时我相信地球人使用水晶报表的人都会遇到这个问题。

    VS加水晶报表一些问题让人真的很头疼,这里记录两个问题与大家共勉。

一、水晶报表首次启动慢,启动过一次后正常的问题。

    这个问题确实存在,同时我相信地球人使用水晶报表的人都会遇到这个问题。引起这个问题的原因很多,Report.SetDataSource()是一个原因之一。目前有两个较好的两个步骤进行启动的优化。

Step one、不搜索打印机

image

图1

    (来自博客http://stackoverflow.com/questions/16662725/crystal-report-takes-long-time-to-load-every-time-in-vs2010

    按照这个方法,我们在设计器去把【打印机】项去掉。

image

图2

image

图3

    在将图3的【取消格式设置页面大小和打印机纸张大小关联】项后,明显加载的速度提升了1-2秒。

    如果不勾上面项,则是报表在搜索打印机的时间耗时了。进行上面一步,只是加速了一部分,还没达到更快的效果。

 

Step two、辅助线程中进行首次报表生成动作

    因为报表确实存在首次生成时速度较快,后面的生成较快的现象。故可以在应用程序启动(或者其他空闲时间)的时候开启一个子线程来进行一次报表的初始化,后面真正要调用的时候就变成第二次调用了,这个就可以较好的解决上述问题了。

操作步骤如下:

(1)在某个地方开启线程初始化报表


  1. Thread trdReport = new Thread(new ThreadStart(this.InitCrystalReport));
  2. trdReport.Priority = ThreadPriority.BelowNormal;
  3. trdReport.Start();


(2)在线程处理函数中实现一次报表生成实例(不用show)

    上面的InitCrystalReport()函数的作用是去crystalReportViewer所在的窗体(这里是ReportPrint)中初始化一次,当然不用show出来。


  1. public void InitCrystalReport()
  2. {
  3.     ReportPrint rPrint = new ReportPrint();
  4.     rPrint.JustTest();
  5. }


    ReportPrint的JustTest()方法是去加载具体的报表模板生成一次。


  1. public void JustTest()
  2. {
  3.     MyReport myReport= new MyReport ();
  4.     ReportDocument document = (ReportDocument)myReport;
  5.     this.crystalReportViewer1.ReportSource = document;
  6. }


    综上,便在后台神秘进行了一次报表生成工作,而这次生成的速度无论多慢帮应用程序来讲都没有一次影响,从而达到提升启动性能的效果。

 

二、报表设计的线条、框微调问题

image

图4

    上图4中的线程和方框如何让它们准确的左右一致呢?用鼠标调和键盘上下左右键调节是作用不大的,各位可以亲自试试。

    真正的窍门在这里:

image

图5 方框的Position

    要想两者左右对齐,只需要将两者的Left,Right设置相同就Ok了。非常吻合!

    Bottom及Top为同样道理。

相关文章
|
3月前
|
人工智能 算法 测试技术
【实测】关于‘钱学森弹道’应用软件测试的设计与实现(03)【终极方案-目标趋向】
【实测】关于‘钱学森弹道’应用软件测试的设计与实现(03)【终极方案-目标趋向】
|
10月前
|
SQL 机器学习/深度学习 人工智能
LLM系列 | 14: 实测OpenAI函数调用功能:以数据库问答为例
今天这篇小作文以数据库问答(Text2SQL)为例进一步介绍ChatGPT的函数调用。本文将介绍如何将模型生成的结果输入到自定义的函数中,并利用该功能实现数据库问答功能。
LLM系列 | 14: 实测OpenAI函数调用功能:以数据库问答为例
|
11月前
|
测试技术
Sonic 开源移动端云真机测试平台 - 用例编写与回放流程实例演示,任务定时执行、图像相似度定位、公共步骤、公共参数、测试套件等(下)
Sonic 开源移动端云真机测试平台 - 用例编写与回放流程实例演示,任务定时执行、图像相似度定位、公共步骤、公共参数、测试套件等(下)
199 0
|
11月前
|
测试技术 数据安全/隐私保护
Sonic 开源移动端云真机测试平台 - 用例编写与回放流程实例演示,任务定时执行、图像相似度定位、公共步骤、公共参数、测试套件等(上)
Sonic 开源移动端云真机测试平台 - 用例编写与回放流程实例演示,任务定时执行、图像相似度定位、公共步骤、公共参数、测试套件等
525 0
|
SQL 监控 数据库
优化一对一直播源码接口性能,从哪一项开始
一对一直播源码在进行接口优化最主要的方式,就是根据问题发生的原因,选择合适的解决方案,提升功能使用体验。
|
机器学习/深度学习 编解码 人工智能
无需额外数据,首次实现ImageNet 87.1% 精度,颜水成团队开源VOLO
VOLO 是第一个在 ImageNet 上无需额外数据达到 87.1% top-1 准确率的模型,进一步拉近了视觉 Transformer 与最顶级 CNN 模型的性能距离。
191 0
无需额外数据,首次实现ImageNet 87.1% 精度,颜水成团队开源VOLO
|
SQL 消息中间件 存储
一份平民化的应用性能优化检查列表(完整篇)
1.总原则 一些正确但稍显废话的原则,但能指导后面每个章节的优化,所以还是要啰嗦一次。 可扩展性架构,堆机器能不能解决问题是最最优先考虑的问题 去中心化的点对点通信,优于通过中心代理的通信 池化的长连接,优于短连接 二进制数据,优于文本数据 尽量减少交互,一次调用的粗粒度聚合接口 优于 多次调用的细粒度接口 尽量减少交互,批量接口优于循环调用 尽量只交互必要的数据 尽量就近访问 尽量使用缓存 总是设定超时 在合适的场景,并行化执行 在合适的场景,异步化执行 2.环境准备 保证符合自家各种规范(没有的话赶紧回家写一个),尤其线下压测服务器的配置要与生产环境一致。 2.1 操作系统 自家
120 0
|
测试技术 传感器 uml
带你读《基于模型的测试:一个软件工艺师的方法》之一:基于模型测试概述
本书主要讨论基于模型的测试(MBT)技术。作为一门手艺而非艺术,其关键在于:对被测软件或系统的理解,选择合适工具的能力,以及使用这些工具的经验。围绕这三个方面,书中不仅综合阐述了MBT的理论知识及工具,而且分享了作者的实战经验。