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 (文字列 columnName、型の種類) で CrystalDecisions.CrystalReports.Engine.Table.BuildTableFromMemberInfos (ArrayList memberInfos、ブール型 autoFlattenCurrentLevel、Int32 currentLevel、Int32 maximumLevels、文字列 namePrefix、DataTable テーブル) で CrystalDecisions.CrystalReports.Engine.Table.BuildTableFromEnumerable (IEnumerable コレクション、型 dataClassType、文字列 tableName) で CrystalDecisions.CrystalReports.Engine.Table.EnumerableToDataSet (IEnumerable コレクション) で CrystalDecisions.CrystalReports.Engine.Table.WrapAndCacheDotNetObject (オブジェクトの値、型の種類、ISCRAdoNetDataSet & crAdoNetDataSet) で CrystalDecisions.CrystalReports.Engine.Table.SetDataSource (オブジェクトの値、型の種類) で CrystalDecisions.CrystalReports.Engine.Table.SetDataSource (IEnumerable 列挙可能) で*
ソースコードを追加し、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"]
);
}
....
}