您的位置:首页 > 数据库

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

2010-11-14 22:23 363 查看
前段时间有人问我,为什么报表设计时以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;

这样就完全没有问题了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: