因为毕业设计的需要 所以研究了一下水晶报表。
前面报表设计什么的都很顺利 但到了调用水晶报表的时候 每次都要输入数据库密码。这很坑爹!
于是网上找了些资料,发现解决方法还是很多的。
不废话,直接贴代码。
方法一;
private void crystalReportViewer1_Load(object sender, EventArgs e)
{
//方法一;
ReportDocument rd = new ReportDocument();
string rdPath = Application.StartupPath +
"\\CrystalReport1.rpt";//CrystalReport1.rpt属性改为始终复制
这样报表就会复制到启动目录
rd.Load(rdPath);//需要传入报表物理路径
TableLogOnInfo logInfo = new TableLogOnInfo();
logInfo.ConnectionInfo.ServerName = ".";
logInfo.ConnectionInfo.UserID = "sa";
logInfo.ConnectionInfo.Password = "123";
logInfo.ConnectionInfo.DatabaseName = "Northwind";
for (int i = 0; i < rd.Database.Tables.Count; i++)
{
rd.Database.Tables[i].ApplyLogOnInfo(logInfo);
}
crystalReportViewer1.ReportSource = rd;
}
方法二;
private void crystalReportViewer1_Load(object sender, EventArgs e)
{
CrystalReport1 rd = new CrystalReport1();//CrystalReport1.rpt下生成有它对应的唯一的CrystalReport1类。其继承自ReportClass:ReportDocument 可以直接用,其实他就是建立的报表的类 所以不用传路径
//后面的都一样
TableLogOnInfo logInfo = new TableLogOnInfo();
logInfo.ConnectionInfo.ServerName = ".";
logInfo.ConnectionInfo.UserID = "sa";
logInfo.ConnectionInfo.Password = "123";
logInfo.ConnectionInfo.DatabaseName = "Northwind";
for (int i = 0; i < rd.Database.Tables.Count; i++)
{
rd.Database.Tables[i].ApplyLogOnInfo(logInfo);
}
crystalReportViewer1.ReportSource = rd;
}
---恢复内容结束---