Хорошо, вот сценарий, который у меня есть приложение VB6, которое переписывается для asp.net 3.5. У меня есть набор Crystal Reports, которые обновляются до Crystal Reports 10.5 (который включен в Visual Studio 2008). Все старые отчеты использовали OLEDB. Я беру операторы sql, используемые в отчетах, и помещаю их в базу данных. Затем я запускаю автоматизированный процесс для создания набора данных из этих операторов выбора, сериализую набор данных и сохраняю схему и данные в виде XML-документа. Затем я перехожу к старому отчету, обновляю его до Crystal Reports 10.5 и меняю расположение источника данных, чтобы он использовал XML-документ.
Когда отчет запускается, я создаю тот же DataSet и вместо его сериализации как XML назначаю его отчету (см. Ниже)
rd.Database.Tables(0).SetDataSource(ds)
Я протестировал это и не получаю никаких ошибок, если я создаю новый отчет, но если я беру существующий отчет и изменяю местоположение базы данных, я получаю следующую ошибку
Предоставлен неверный аргумент. Не удалось открыть набор строк. Ошибка в файле C: \ DOCUME ~ 1 \ username \ LOCALS ~ 1 \ Temp \ R-302 {D49E0C73-47AC-4363-AAD5-E925DFCF446E} .rpt: недопустимый аргумент для базы данных. в CrystalDecisions.ReportAppServer.ConvertDotNetToErom.ThrowDotNetException (Exception e) в CrystalDecisions.ReportSource.EromReportSourceBase.ExportToStream (ExportRequestContext reqContext) в CrystalDecisions.CrystalReports.Engine.Format
Кажется, что отчет все еще пытается подключиться с помощью OLEDB к старой базе данных. Мне удалось заставить отчет работать, если я перепишу его, используя ту же логику, но обновленные отчеты через указанную выше ошибку. Как мне это исправить?