我有一个查询 64 位 SQL Server 2012 数据库的 Crystal Report。数据源是一个带有一个参数的存储过程。程序代码采用参数并将其设置为局部变量,以避免直接使用参数变量时遇到的问题。该报表有一个子报表,它使用与主报表相同的数据源。我通过子报表链接将参数传递给子报表。该报表使用 OLE DB (ADO) 数据库类型和 SQLOLEDB 提供程序。
在版本 9 中,报告运行大约 20 分钟,然后返回验证数据库消息框,显示“数据库文件“[过程名称]”已更改。继续修复报告!” 然后 Map Fields 窗口打开,并且没有任何过程的字段可用。我只需单击下一步,检查公式错误和其他内容,然后报表呈现,但子报表中没有字段。
在版本 10 中运行的完全相同的报告,没有任何更改,立即呈现。如果我删除子报表或将提供程序更改为 SQL Native Client 11,则报表会立即在版本 9 中呈现。
此报告需要在现有的 VB6 应用程序中使用,因此我必须使用 OLE DB 并且必须让它在版本 9 中呈现。
任何人都知道为什么它不能在使用 OLE DB 的版本 9 上运行?