7

有什么方法可以更改报表及其所有子报表的数据源位置,而无需手动打开每个子报表?

4

5 回答 5

6

这是我在运行时设置连接的方式。我从配置位置获取连接信息。

        #'SET REPORT CONNECTION INFO
        For i = 0 To rsource.ReportDocument.DataSourceConnections.Count - 1
            rsource.ReportDocument.DataSourceConnections(i).SetConnection(crystalServer, crystalDB, crystalUser, crystalPassword)
        Next

        For i = 0 To rsource.ReportDocument.Subreports.Count - 1
            For x = 0 To rsource.ReportDocument.Subreports(i).DataSourceConnections.Count - 1
                rsource.ReportDocument.OpenSubreport(rsource.ReportDocument.Subreports(i).Name).DataSourceConnections(x).SetConnection(crystalServer, crystalDB, crystalUser, crystalPassword)
            Next
        Next
于 2008-09-03T15:53:52.320 回答
2

如果您只是将其作为一次性交易,我的建议可能无济于事。但是,如果您经常更改数据源,它可能会很有用。

免责声明:我从 9.0 版开始就没有使用过 Crystal,所以我不知道他们是否对此进行了改进。我一直使用UDL 文件。基本上,它是指向数据源的指针。将报表设置为指向 UDL,并且 UDL 指向数据源。如果源发生变化,只需更新 UDL。

如果您有多个报告,这将非常有用。当服务器更改时,您只需更新一个文件。

于 2008-10-01T14:40:28.700 回答
1

链接的子报告(至少在 CR XI 中)共享主报告的数据源 - 大概您的报告已经配置,所以这不是您的选择?

于 2008-09-02T21:28:15.160 回答
1

@Unsliced 我认为他遇到的问题是,当您使用某人针对另一个数据库开发的水晶报表并在 Crystal Reports XI 中提出它时,您必须为每个字段(包括子报表中的字段)执行更改数据源。如果您只是在报告的顶层更改源,它通常会出错。(我认为这是 Crystal Reports 中的一个已知问题)。

于 2008-09-02T23:20:56.780 回答
-1

我猜您是在谈论 Reporting Services 中的 .rdl 文件?(如果不是,我的回答可能是错误的)

它们基本上只是 XML,因此您可以加载它们中的每一个并执行 XPath 查询以获取包含数据源的节点并对其进行更新。

于 2008-09-02T21:20:41.293 回答