取消水晶报表的数据库登录框 分享

这两天在和斌做后台中的报表,暂定使用水晶报表,目前还只是处于对水晶报表的初级应用阶段,也就是知道如何 汇个总、写个函数、传个参数。

问题总是层出不穷,在最后整合报表,进行报表显示测试的时候,发现每次更新数据显示(除第一次)时都会蹦出一个“登录数据库的信息提示界面”很是苦闷,并且这肯定不是我们需要的,还是需要花大力气搞定的。

于是参考了某斑竹写的一篇 “取消水晶报表的数据库登陆框”博文。颇有感触,于是进行了消化吸收,整合代码如下。

主要是,针对水晶报表对每数据库登录(DbLogOn)提供一次数据库链接信息。

Imports CrystalDecisions.Shared Imports CrystalDecisions.CrystalReports.Engine Imports System.Reflection Imports System.Configuration Imports CrystalDecisions.Web Public Class ReportConfig ''' <summary> ''' 提供web报表链接数据库所需要的信息,无参数,有返回值。 ''' </summary> ''' <returns>返回链接信息的属性,其中有servername、database、userid、pwd</returns> ''' <remarks></remarks> Public Function readConfig() As TableLogOnInfo Dim strServerName As String Dim strDataBase As String Dim strUserId As String Dim strPwd As String Dim logoninfo As New TableLogOnInfo '从web.config配置文件中读取信息. strServerName = System.Configuration.ConfigurationManager.AppSettings("servername") strDataBase = System.Configuration.ConfigurationManager.AppSettings("database") strUserId = System.Configuration.ConfigurationManager.AppSettings("userid") strPwd = System.Configuration.ConfigurationManager.AppSettings("pwd") logoninfo.ConnectionInfo.ServerName = strServerName logoninfo.ConnectionInfo.DatabaseName = strDataBase logoninfo.ConnectionInfo.UserID = strUserId logoninfo.ConnectionInfo.Password = strPwd '信息封装成logoninfo. Return logoninfo End Function ''' <summary> ''' 设置报表查看器不再显示登录数据库提示 ''' </summary> ''' <param name="crv">当前报表查看器id</param> ''' <param name="coninfo">报表链接到数据库所需信息</param> ''' <returns></returns> ''' <remarks></remarks> Public Function SetDbLoginForReport(ByVal crv As CrystalReportViewer, ByVal coninfo As ConnectionInfo) As String 'tablelogoninfos 就是包括每个表中的logoninfo对象 Dim tablelogoninfos As TableLogOnInfos = crv.LogOnInfo Dim logoninfo As New TableLogOnInfo For Each logoninfo In tablelogoninfos '绑定每一个logoninfo对象的数据库链接信息,这样可以不再显示数据库登录提示信息。 logoninfo.ConnectionInfo = coninfo Next Return Nothing End Function End Class

中一个报表:

'省略.... Dim SelectByDate As New CollectMgr Dim dt As New DataTable Dim doc As New ReportDocument Dim coninfo As New TableLogOnInfo Dim reportconfig As New ReportConfig '省略.... '获得报表链接数据库所需的所有参数信息 coninfo = reportconfig.readConfig Try '加载报表样表 doc.Load(Server.MapPath("./Cashier.rpt")) '返回数据源 If txtStartTime.Value = txtEndTime.Value Then dt = SelectByDate.FoodCollect(txtStartTime.Value) Else dt = SelectByDate.FoodCollect(txtStartTime.Value, txtEndTime.Value) End If doc.SetDataSource(dt) crvCashierReport.ReportSource = doc '防止出现提示登录数据库的情况 reportconfig.SetDbLoginForReport(crvCashierReport, coninfo.ConnectionInfo) '结束

置文件:

<appSettings> <add key="servername" value="****" /> <add key="database" value="***" /> <add key="userid" value="**" /> <add key="pwd" value="***" /> </appSettings>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值