Crystal Report 在版本 10.5 和 Visual Studio 2008 (.NET framework 3.5) 下开发并运行良好。但是,当迁移到版本 13.0.2 和 Visual Studio 2010 (.NET framework 4.0) 时。我收到以下错误:
有人有过类似的经历吗?欢迎任何帮助或解决方案。
消息:名为“**Item**”的列已属于此 DataTable。 来源:System.Data 当前方法:Void RegisterColumnName(System.String, System.Data.DataColumn) 堆栈跟踪: 在 System.Data.DataColumnCollection.RegisterColumnName(字符串名称,DataColumn 列) 在 System.Data.DataColumnCollection.BaseAdd(DataColumn 列) 在 System.Data.DataColumnCollection.AddAt(Int32 索引,DataColumn 列) 在 System.Data.DataColumnCollection.Add(字符串列名,类型类型) 在 CrystalDecisions.CrystalReports.Engine.Table.BuildTableFromMemberInfos(ArrayList memberInfos,布尔 autoFlattenCurrentLevel,Int32 currentLevel,Int32 maximumLevels,字符串 namePrefix,DataTable 表) 在 CrystalDecisions.CrystalReports.Engine.Table.BuildTableFromEnumerable(IEnumerable 集合,类型 dataClassType,字符串表名) 在 CrystalDecisions.CrystalReports.Engine.Table.EnumerableToDataSet(IEnumerable 集合) 在 CrystalDecisions.CrystalReports.Engine.Table.WrapAndCacheDotNetObject(对象 val,类型类型,ISCRAdoNetDataSet& crAdoNetDataSet) 在 CrystalDecisions.CrystalReports.Engine.Table.SetDataSource(对象 val,类型类型) 在 CrystalDecisions.CrystalReports.Engine.Table.SetDataSource(IEnumerable enumerable)*
添加了源代码,DetailSps 和其他数据集在 .xsd 文件中定义。错误来自:Report.Database.Tables["DetailSps"].SetDataSource:
public void CreateReport(ReportInfo reportInfo)
{
PopulateReportData(reportInfo.SpecDetail.Table);
ReportClass Report = new DetailsRpt();
Report.ReportOptions.EnableSaveDataWithReport = true;
Report.ReportOptions.EnableSaveSummariesWithReport = true;
// now add the tables used in Report
Report.Database.Tables["DetailSps"].SetDataSource(
DetailSps.OrderBy(x => x.ID)
.ThenBy(x => x.Specall_ID));
.....
}
private void PopulateReportData(DataTable dt)
{
foreach (DataRow dr in dt.Rows)
{
DetailSps.AddDetailsRow(
(String)dr["ID"],
(String)dr["Type"],
CommonDateFunctions.FormatStringAsDateMDYYYY(dr["selected_date"].ToString()),
......
(String)dr["ErrorCode"]
);
}
....
}