日期:2014-05-18  浏览次数:20940 次

水晶报表的小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. 表的结构和水晶报表中定义的不一致