水晶报表_避免多次查询数据库_提高速度

水晶报表打印设置!!!很经典呀 水晶报表打印设置!!!很经典呀,我给公司做报表是常常使用它呀! 立即下载

最近现场反映做的水晶报表打印时特别慢,调查后发现确实如此,

原来在web客户端打印时,点击“打印”按钮弹出打印机选择画面以及实际打印时,都需要重新绑定水晶报表(一般在绑定的方法中要操作数据库),

造成速度很慢。

 

对策:控制只操作一次数据库,将结果数据保存在session中。

注意print_Init会多次执行。

 

    Private Sub print_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
        '显示水晶报表()    '翻页到第二页后不正对应
        'Me.ShowReport()  
        If Not IsPostBack Then
            Session("dtparms") = Nothing
        Else
            Me.ShowReport()
        End If

    End Sub

    Private Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not IsPostBack Then
            If Session(ConstantInfo.SESSION_USER_INFO_CONST) Is Nothing Then
                Me.Page.ClientScript.RegisterStartupScript(Me.GetType, "msg", "<script language='javascript'>parent.location.href='../login.aspx';</script>")
                Exit Sub
            End If

            Dim strKey = Request.Item("Key").ToString().Trim
            Select Case Request.Item("printName").ToString()
                Case "XXX.rpt"
                    Session("dtparms") = 取数据库函数(strKey)
                Case ""
            End Select

            Me.ShowReport(True)
        End If
    End Sub

    '显示水晶报表
    Public Sub ShowReport(Optional ByVal bolFirstLoadFlag As Boolean = False)
        Dim fileName As String
        Dim strKey As String
        Dim ds As New DataSet
        Dim dtparms As New DataTable
        fileName = Request.Item("printName").ToString()
        strKey = Request.Item("Key").ToString().Trim

        Select Case fileName
            Case "XXX.rpt"
                strTitle = "标题。。。。"

                If Session("dtparms") Is Nothing Then                   

                    dtparms = 取数据库函数(strKey) 

                    Session("dtparms") = dtparms

                Else
                    dtparms = CType(Session("dtparms"), DataTable)
                End If

                If dtparms Is Nothing OrElse dtparms.Rows.Count < 1 OrElse dtData Is Nothing Then
                    Exit Sub
                End If
                '设置水晶报表页面
                Me.CrystalReportSource1.ReportDocument.Load(Server.MapPath("/Aspx/XX/" + fileName))
                '设置水晶报表数据源
                Me.CrystalReportSource1.ReportDocument.SetDataSource(dtData)
                '设置水晶报表参数
                Me.CrystalReportSource1.ReportDocument.SetParameterValue("A", dtparms.Rows(0).Item("A").trim)
                ....
            Case ""
        End Select

        '绑定
        Me.CrystalReportSource1.DataBind()
        Me.CrystalReportViewer1.DataBind()

        '样式设定
        Me.CrystalReportViewer1.Visible = True
        '初次载入时,保存pdf
        If bolFirstLoadFlag Then
            SavePdf("要保存的PDF文件名.pdf")
        End If
        Me.CrystalReportViewer1.PrintMode = CrystalDecisions.Web.PrintMode.ActiveX
        CrystalReportViewer1.BestFitPage = True
        CrystalReportViewer1.HasCrystalLogo = False
        CrystalReportViewer1.HasSearchButton = False
        'CrystalReportViewer1.HasExportButton = False
        CrystalReportViewer1.HasToggleGroupTreeButton = False
        CrystalReportViewer1.HasViewList = False
        CrystalReportViewer1.ToolbarStyle.Width = New Unit("950px")

        CrystalReportViewer1.ShowFirstPage()
    End Sub

    '保存PDF文档
    Private Sub SavePdf(ByVal strPdfFileName As String)
        Dim rDoc As New CrystalDecisions.CrystalReports.Engine.ReportDocument

        Try
            rDoc = Me.CrystalReportSource1.ReportDocument
            rDoc.ExportOptions.ExportFormatType = ExportFormatType.PortableDocFormat
            rDoc.ExportOptions.ExportDestinationType = ExportDestinationType.DiskFile
            Dim diskOpts As DiskFileDestinationOptions = New DiskFileDestinationOptions()
            diskOpts.DiskFileName = WebConfigurationManager.AppSettings("PdfFileFold").ToString + strPdfFileName
            rDoc.ExportOptions.DestinationOptions = diskOpts
            rDoc.Export()
        Catch ex As Exception

        End Try
    End Sub

    Private Function 取数据库函数(ByVal strOrderNo As String) As DataTable
        。。。
        Return table
    End Function

 

soul聊天协议逆向 通过观察上面的CFG发现,该混淆符合以下逻辑,整体思路就是先查找主分发器,一般被引用次数最多的那个块就是主分发器,引用主分发器的块大概率是真实块,再使用unicorn模拟执行,遍历每一个分支,记录每一个块,如果某一个块是上次记录的块则也为真实块,无后继的块则为retn块,剩下的就是无用块。通过Frida Hook libc.so后发现,聊天协议走的是JAVA层的socket,然后Hook JAVA层相关函数得到如下调用堆栈。里面调用的函数不是很多,所以。不行不行,革命要彻底! 阅读详情

相关推荐

MaxEnt软件的下载与安装

1、下载网站:http://lucky-boy.ys168.com/ (这是之前在网上搜到的,里面有许多软件安装包,感谢网页主的资源共享,违权必删)

weixin_42191203的博客 2万+

重试C#水晶报表页面显示问题

<br />今天早上又研究了一下水晶报表的页面显示技术,总结如下:<br />一、相关技术准备<br />1、page_init与page_load的区别。<br />IsPostBack是判断页面是否回传,若IsPostBack为TRUE的话那就是回传,要是False为首次加载,IsPostBack默认为FALSE <br /> <br />2、水晶报表“推模式”工具栏点击时的注意事项。<br />在执行时,第一次显示的报表内容是正确的,但是进行任何工具栏上的操作之后,总是显示输入参数值的窗口,为了将该窗

ddv_9527的专栏 1420

别再瞎调了!STM32 Systick延时函数避坑指南(正点原子、野火、慧净代码对比)

本文深入解析STM32 Systick延时函数的实现差异与优化策略,对比正点原子、野火、慧净等主流方案的优缺点。针对us和ms级延时精度问题,提供避坑指南和高级优化技巧,帮助开发者根据项目需求选择最佳方案,提升嵌入式系统的定时控制精度。

weixin_28717807的博客 340

Java 避免多次查询数据库获取相同的值 减少查询数据库的小技巧

map集合存放

努力工作 认真玩 2506

MATPOWER下载安装教程

将MATPOWER文件复制在C:\Program Files (x86)\MATLAB\R2016b\bin目录下。原来的窗口中多了很多文件路径,点击【保存】,再点击【关闭】选择所要添加的MATPOWER文件夹,点击【选择文件夹】二、将MATPOWER放在bin目录下。找到菜单栏的【设置路径】点击【添加并包含子文件】一、从官网下载后解压。

weixin_47365903的博客 2万+

IC618新手避坑指南:从零在Linux上配置Cadence Virtuoso环境(含cds.lib文件详解)

本文详细介绍了在Linux系统上配置Cadence Virtuoso IC618环境的完整指南,特别针对新手常见问题提供解决方案。重点解析了cds.lib文件的关键配置,包括库路径定义和工艺库管理,并分享了高效工作流设置和典型问题排查技巧,帮助工程师快速搭建稳定的EDA设计环境。

weixin_26805597的博客 553

不要循环查询数据库

在编码过程中要避免在循环中查询数据库,能一次查询的就不要多次查询。下面两个代码块是完全等效的。代码块一写起来简单,但却在循环中多次查询数据库,该代码执行时间为8毫秒。代码二写起来麻烦甚至还多了个双重循环,但只查询一次数据库,该代码执行时间为2毫秒。 代码块一: for (Device dev : list) { String dmi = dev.getDeviceModelId(); if

keketrtr的专栏 1万+

(2024,DDPM,DDIM,流匹配,SDE,ODE)扩散:基础教程

本文的目标是尽可能简单地教授扩散。第一节介绍扩散的基本原理。第二节和第三节展示如何构建随机和确定性扩散采样器。第四部分介绍了密切相关的流匹配,可看作是扩散的推广。​第五节,强调实践中最重要的一些设计选择,包括采样器、噪声时间表和参数化方法。

qq_44681809的博客 1万+

如何避免循环查询数据库_与数据库无关的查询是不可避免的

避免查询经常访问数据库As the amount of data managed by an organization grows, the difficulty of managing and querying that data grows as well: more databases, more query languages, more gotchas to keep in mind a...

weixin_26752759的博客 2618

基于非接触式微波雷达设计的跌倒检测预警系统【短信报警】

本项目选择基于非接触式微波雷达的跌倒检测预警装置作为技术核心,采用云帆瑞达的R60AFD1跌倒检测模组。这一模组能够根据人体的运动变化,如速度、距离和姿态等特征,判断是否发生跌倒,并可以持续监控老年人是否处于危险状态。此外,本项目还结合4G通信技术,通过Air724UG模块实现短信报警功能,一旦检测到跌倒事故,系统将自动通过4G网络向紧急联系人发送短信报警,及时通知亲属或医护人员进行救援。

1753

【大模型】DeepSeek 高级提示词技巧使用详解

DeepSeek 高级提示词技巧使用详解

congge 1万+

数据库涉及大量数据查询时的注意事项

避免频繁连接和关闭数据库,这样会导致IO访问次数太频繁。 设计表时要建立适当的索引,尤其要在 where 及 order by 涉及的列上建立索引 避免全表扫描,以下情况会导致放弃索引直接进行全部扫描 避免在 where 子句中使用!=或<>操作符 避免在 where 子句中对字段进行 null 值判断 select id from table where num is null 解决方法:建表时设置默认值0,也就是将null用0填充,然后查询: select id fr..

Baimoc 1898

基于STM32L4XX、HAL库的IP101GRI以太网收发器(PHY)驱动程序设计

define IP101GRI_PHY_ADDRESS 0x01 // 根据硬件设计设置PHY地址。#define IP101GRI_PHYSTS 0x10 // PHY状态寄存器。#define IP101GRI_PHYINIR 0x12 // PHY中断寄存器。#define IP101GRI_PHYCR 0x14 // PHY控制寄存器。#define IP101GRI_PHYID2 0x03 // PHY标识符2。

zhusl6688的博客 721

后台程序多sql一起执行,避免多次请求数据库,造成访问过慢

方式1 注意,不能有换行符,可以都是删除,也可以都是新增,也可以都是修改,也可以混着来,但是要注意业务逻辑 begin update Tablename set l1 = 1 where b1 = '1'; update Tablename set l1 = 2 where b1 = '2'; end; 多条sql新增 String sqlAdd="insert all "; for (int i = 0; i < args.length; i++) { sqlAdd+=" into tabl

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 1411

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

如何避免多表联查

好记忆不如烂笔头,能记下点东西,就记下点,有时间拿出来看看,也会发觉不一样的感受! 目录 方式一、添加冗余字段 方式二、小表广播 方式三、建立集中的服务 方式四、基于数据中心 跨入21世纪,数据呈现了暴增的阶段,以往数据结果的获取方式都是以多表联查为主而获得的结果,可是在大数据的时代,数据暴增的情况下,再如此往复的使用多表联查,势必会对性能造成一定的影响,那么如何才能够避免使用多表联查,而又能达到预期的效果呐 ? 方式一、添加冗余字段 所谓冗余字段,就是在主要的信息上,添加上一些辅助的字段

草原孤狼的专栏 3345

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

数据库干货 | 防止重复记录的发生

今天的故事值得注意的是,尽管有方法可以防止插入重复的行,但这并不一定意味着可以防止所有数据重复。至少,设计人员或开发人员必须采取其他预防措施,要么在数据库设计中采用严格的规范化,要么在应用程序级别执行特定的验证。

Navicat 官方账号 2442

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

避免数据库多表查询

避免数据库多表查询(steam流用法)

weixin_52081841的博客 370

水晶报表(CrystalReports)打印机的选择及背景大小的设定

水晶报表默认识别本地电脑默认打印机配置及默认纸张大小      如图: 在面版上右击:【设计】→【打印机设置】 如图: 到这里我们想要做的单据大小完全可以通过这个设置得到 纸张大小可以先在打印机服务属性中定义好,然后在上面设置向导中选择即可 如下图:

ajaxtop 1万+

水晶报表页面加载速度慢如何解决

<br />最近一个系统中用到了水晶报表来做交叉报表,之前从来没有使用过水晶报表所以感觉用起来比较困难,做好了一个简单的交叉表页面发,发布,问题来了,访问水晶报表页面时,查询显示 和 访问加载都很慢,比普通自写的展示数据的页面加载要慢的多,这是不是由于水晶报表加载了所有数据导致页面加载慢的?如果是能否通过自定义分页,控制每次显示的数据量。但是自定义分页怎么弄我也不明白希望高手给个指导,先谢过了。这要看报表的制作方式,如是使用PUSH还是PULL模式,还有数据量的大小的关系。<br />当然,数据量巨大的话,

h57020877的专栏 4012
上一篇: 串口读写测试
下一篇: 代码编写注意_(IIF,SQL语句的WHERE条件写法)
wang_cel
博客等级 码龄24年 14粉丝 72原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值