使用 ReportClientDocument.Open() 方法绑定到非托管 RAS 服务器
![]() |
---|
本页描述了在 Crystal Reports for Visual Studio 中未提供但在升级版本中提供的功能。若需更多有关 Crystal Reports for Visual Studio 的信息,请参见“什么是 Crystal Reports for Visual Studio?”有关升级版本的更多信息,请参见“升级选项”。 |
对象模型
此报表绑定方案使用 ReportClientDocument(请参见“通过 ReportClientDocument 对象模型进行报表绑定(RAS)”)。
报表的位置
报表位于非托管 RAS 服务器(请参阅“报表应用程序服务器(RAS)”)有权访问的文件目录中。
说明
此报表绑定方案直接访问 ReportClientDocument 对象模型。它将文件目录路径以对象的形式和整数 0(在 Visual Basic 中为可选参数)一起传递到 ReportClientDocument 的 Open() 方法中。有关代码示例,请参见下面一节。
优点
- 向后兼容性:使用 RAS 9 和更高版本与 ReportClientDocument 对象模型中的报表进行交互的可行方法。
- 优化的性能:由于报表应用程序服务器(RAS)中报表引擎的优异性能使性能显著提高。请参见“比较所有 Business Objects 报表解决方案的结构”。
- 方便的可移植性:维护与使用 ReportDocument 对象模型的报表进行交互的所有原始代码,同时仍可以通过 ReportDocument.ReportClientDocument 属性完全访问基础 ReportClientDocument 对象模型。
注意
ReportClientDocument 对象模型允许以编程方式创建、修改报表定义文件并保存对报表定义文件的更改。有关更多信息,请参见“结构”中的 “ReportClientDocument 对象模型(RAS)”。
- 直接编码:允许直接访问 ReportClientDocument 对象模型。
缺点
- 性能潜力较低:升级到非托管 RAS 服务器将显著提高报表的性能,但提高程度不如升级到托管 RAS 服务器。
使用 ReportClientDocument 的 Open 方法将报表从本地文件目录加载到 RAS 服务器中
- 已安装非托管 RAS 服务器版本 9 或更高版本,并且经验证可以正常工作。
此过程仅适用于已通过“项目设置”创建的项目。“项目设置”包含此过程需要的特定命名空间引用和代码配置。如果没有该配置,将无法完成此过程。因此,在开始此过程之前,必须首先执行“项目设置”中的步骤。
RAS 服务器仅适用于 Web 项目。
- 在 ConfigureCrystalReports() 方法(在“项目设置”中创建)中,添加一个字符串声明,该声明包含本地报表的路径。
<table>
<colgroup>
<col style="width: 100%" />
</colgroup>
<thead>
<tr class="header">
<th><img src="images/8yfdxzdx.alert_note(zh-cn,VS.90).gif" alt="Note" class="note" />注意</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>此路径是存储 RAS 报表的默认目录。RAS 服务器可能会拒绝其它报表路径并显示“访问被拒绝”错误。</p></td>
</tr>
</tbody>
</table>
``` vb
Dim reportPath As String = "C:\Program Files\Crystal Decisions\" _ & "Report Application Server 10\Reports\" _ & "World Sales Report.rpt"
```
``` csharp
string reportPath = "C:\\Program Files\\Crystal Decisions" + "\\Report Application Server 10\\Reports" + "\\World Sales Report.rpt";
```
- 将 reportPath 字符串转换为 Object 变量。
<table>
<colgroup>
<col style="width: 100%" />
</colgroup>
<thead>
<tr class="header">
<th><img src="images/8yfdxzdx.alert_note(zh-cn,VS.90).gif" alt="Note" class="note" />注意</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>ReportClientDocument 的 Open() 方法要求该字符串是对象的形式,而不是字符串的形式。</p></td>
</tr>
</tbody>
</table>
``` vb
Dim reportPathAsObject As Object = CType(reportPath, Object)
```
``` csharp
object reportPathAsObject = (object)reportPath;
```
声明并实例化 ReportClientDocument。
Dim myReportClientDocument As ReportClientDocument = New ReportClientDocumentClass()
ReportClientDocument reportClientDocument = new ReportClientDocumentClass();
将报表路径(作为对象变量)和 Options 参数(作为整数 0,它在 Visual Basic 中为可选参数)传递到 ReportClientDocument 实例的 Open 方法。
<table>
<colgroup>
<col style="width: 100%" />
</colgroup>
<thead>
<tr class="header">
<th><img src="images/8yfdxzdx.alert_note(zh-cn,VS.90).gif" alt="Note" class="note" />注意</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td><p>这将从本地文件目录中打开报表,并将其加载到非托管报表应用程序服务器(RAS)中。</p></td>
</tr>
</tbody>
</table>
``` vb
myReportClientDocument.Open(reportPathAsObject, 0)
```
``` csharp
reportClientDocument.Open(ref reportPathAsObject, 0);
```
将 ReportClientDocument 实例绑定到 CrystalReportViewer 控件。
myCrystalReportViewer.ReportSource = myReportClientDocument
crystalReportViewer.ReportSource = reportClientDocument;
若要查看该报表,请生成并运行您的项目。