水晶报表的小case
水晶报表预览的时候正常,可以一用数据源填充就变成白纸了。
if (ds.Tables[ "Antenna "].Rows.Count > 0)
{
CA1.FileName = "rassdk:// "+Application.StartupPath + "\\Report\\CA.rpt ";
CA1.SetDataSource(ds.Tables[ "Antenna "]);
crystalReportViewer1.ReportSource = CA1;
crystalReportViewer1.RefreshReport();
}
ds填充的代码是这样写的。
谢谢各位给帮帮忙吧
------解决方案--------------------检查点:
Antenna的表结构跟报表内使用的不一样!
------解决方案--------------------不知道楼主是怎么做的.
给你一下我的做法是这样的.
string connStr =ConfigurationSettings.AppSettings[ "ConnString1 "].ToString();
SqlDataSource datasource = new SqlDataSource(connStr, "select * from yang ");
ReportDocument doc = new ReportDocument();
TableLogOnInfo logininfo = new TableLogOnInfo();
string path;
path = Server.MapPath( "report1.rpt ");
doc.Load(path);
string a, b, c, d;
a = System.Configuration.ConfigurationManager.AppSettings[0];
b = System.Configuration.ConfigurationManager.AppSettings[1];
c = System.Configuration.ConfigurationManager.AppSettings[2];
d = System.Configuration.ConfigurationManager.AppSettings[3];
logininfo.ConnectionInfo.ServerName = a;
logininfo.ConnectionInfo.DatabaseName = b;
logininfo.ConnectionInfo.UserID = c;
logininfo.ConnectionInfo.Password = d;
doc.Database.Tables[0].ApplyLogOnInfo(logininfo);
doc.Database.Tables[0].SetDataSource(datasource.Select(DataSourceSelectArguments.Empty));
CrystalReportViewer1.ReportSource = doc;
------解决方案--------------------首先定义一个SqlDataSource 为他填充数据集.select * from yang
再定义一个ReportDocument ,再加载你做好的报表.
对于这个是 TableLogOnInfo ,是用来强制连接数据库用的.
doc.Database.Tables[0].SetDataSource(datasource.Select(DataSourceSelectArguments.Empty));这句就是用来把数据集加载到报表的
------解决方案--------------------没可能吧.我的报表都是这样子做的.没什么问题..
你那数据集是不是跟你的报表对应啊?
------解决方案--------------------那你就用那段强制连接数据库的代码下去.
------解决方案--------------------1. 表没有数据
2. 表的结构和水晶报表中定义的不一致