好的,这是我有一个VB6应用程序的场景,正在为asp.net 3.5重新编写。我有一大堆Crystal Reports正在更新到Crystal Reports 10.5(包含在Visual Studio 2008中)。所有旧报告都使用OLEDB。我正在做的是获取报告中使用的sql语句并将它们放在数据库中。我接下来运行一个自动化过程,从那些select语句创建一个数据集,我序列化DataSet并将模式和数据保存为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.CrystalReports.Engine.FormatEngine.ExportToStream
的CrystalDecisions.ReportSource.EromReportSourceBase.ExportToStream(ExportRequestContext reqContext)的CrystalDecisions.ReportAppServer.ConvertDotNetToErom.ThrowDotNetException(Exception e)似乎报告仍在尝试使用OLEDB连接到旧数据库。如果我使用完全相同的逻辑重写它,但是通过上述错误更新了报告,我能够获得报告。我该如何解决?
答案 0 :(得分:1)
我在这里发布这个是因为它是“无效参数提供的水晶”的最佳结果。
我正在Crystal Reports XI中处理一个报告,该报告链接到我试图通过GUI更改的数据源。选择新的数据源并单击“更新”似乎什么也不做,我将关闭对话框,此时我将收到消息“提供的无效参数”。在最终关闭并重新打开文件之前我尝试了很多东西,这在我再次尝试时起作用。
这允许我修改数据源而不删除任何相关字段。
我的工作PC保持登录/开启/锁定24/7用于VPN目的,我在前一天打开了有问题的报告。我的猜测是,与SQL实例的连接超时并且没有重新建立。
我为这个古老的问题而道歉,或者这是不对的;但鉴于网页在搜索结果中的突出地位,我希望这可以帮助其他人。
答案 1 :(得分:0)
我有完全相同的错误和上下文(Visual Studio 2008中的Crystal Report)。 在新报告中使用我的新连接很好但是将相同的连接分配给旧报告(使用“设置数据源位置”)在使用带有函数ExportToStream的报告时遇到了这个错误。
我最终做的是去“数据库专家”,删除我的连接并在“删除文件”框中说“确定”“此文件中的报告中有字段。继续?”这样做会删除报告中的所有字段。我必须重新插入它们并为我的组重新选择字段,但至少,我没有必要重做所有布局。
我猜,这是Crystal Basic for Visual Basic中的一个错误。
答案 2 :(得分:0)
我在使用较旧的连接时遇到同样的错误。
分辨率: