WEB水晶报表提示连接数据库

前段时间有人问我,为什么报表设计时以OLEDB方式连接数据库,WEB打印时有时候会提示连接数据库,但是重新作一份又没有了。

我作了一些测试,发现是这样的,当你设计报表时是以A1服务器, A1数据库),运行时是以B1服务器,A2数据库(只要是服务器或是数据库有1个不同于设计时的),你在运行时,它就会提示你输入数据库和密码,尽管你已经设了logininfo之类的信息,依然无效。 我猜水晶报表会记录你的服务器和数据库名,当你换了数据库或服务器时,虽然你的数据库结构是一样,水晶报表也会认为你可能结构不一样,所以会提示这个。它好像需要你的一个手动确认安全的一个过程一样。其实我认为这应是水晶报表的一个bug,但为什么一直它不去解决我就不知道了。说了这么多废话,还是代码直接点:

        ReportDocument repDoc = new ReportDocument();
        string strReportFileName = "";
        string strPath = Server.MapPath("~\\Reports\\" + strReportFileName);            
        repDoc.Load(strPath);

   string loginuser = "sa";

        string password = "123";

        string servername = "server1";

        string databasename = "database1"

        repDoc.SetDatabaseLogon(loginuser, password, server1, database1, true);

            CrystalDecisions.Shared.ConnectionInfo loConnInfo = new ConnectionInfo();           
            loConnInfo.ServerName = server1;
            loConnInfo.DatabaseName = database1;
            loConnInfo.UserID = loginuser;
            loConnInfo.Password = password;

            CrystalDecisions.Shared.TableLogOnInfo loTableLogonInfo;

            foreach (CrystalDecisions.CrystalReports.Engine.Table table in repDoc.Database.Tables)
            {
                loTableLogonInfo = table.LogOnInfo;
                loTableLogonInfo.ConnectionInfo = loConnInfo;
                table.ApplyLogOnInfo(loTableLogonInfo);
            }

            CrystalReportViewer1.ReportSource = repDoc;

 

这样就完全没有问题了。

转载于:https://www.cnblogs.com/javak/archive/2010/11/14/1877221.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值