使用 ReportClientDocument.Open() 方法绑定到非托管 RAS 服务器

Note注意

本页描述了在 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 对象模型。
    Note注意

    ReportClientDocument 对象模型允许以编程方式创建、修改报表定义文件并保存对报表定义文件的更改。有关更多信息,请参见“结构”中的 “ReportClientDocument 对象模型(RAS)”

  • 直接编码:允许直接访问 ReportClientDocument 对象模型。

缺点

  • 性能潜力较低:升级到非托管 RAS 服务器将显著提高报表的性能,但提高程度不如升级到托管 RAS 服务器。

使用 ReportClientDocument 的 Open 方法将报表从本地文件目录加载到 RAS 服务器中

  • 已安装非托管 RAS 服务器版本 9 或更高版本,并且经验证可以正常工作。

此过程仅适用于已通过“项目设置”创建的项目。“项目设置”包含此过程需要的特定命名空间引用和代码配置。如果没有该配置,将无法完成此过程。因此,在开始此过程之前,必须首先执行“项目设置”中的步骤。

RAS 服务器仅适用于 Web 项目。

  1. 在 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";
```
  1. 将 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;
```
  1. 声明并实例化 ReportClientDocument。

    Dim myReportClientDocument As ReportClientDocument = New
    ReportClientDocumentClass()
    
    ReportClientDocument reportClientDocument = new
    ReportClientDocumentClass();
    
  2. 将报表路径(作为对象变量)和 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);
```
  1. 将 ReportClientDocument 实例绑定到 CrystalReportViewer 控件。

    myCrystalReportViewer.ReportSource = myReportClientDocument
    
    crystalReportViewer.ReportSource = reportClientDocument;
    
  2. 若要查看该报表,请生成并运行您的项目。

请参见