添加报表登录代码

现在即可向代码隐藏类添加登录代码。首先,创建一个私有帮助器方法 SetDBLogonForReport()。

创建 SetDBLogonForReport() 方法并编写该方法的代码

  1. 返回到此 Web 或 Windows 窗体的代码隐藏类。

  2. 在类的底部,创建名为 SetDBLogonForReport() 的新私有帮助器方法,并将 ConnectionInfo 传递给方法签名。

    Private Sub SetDBLogonForReport(ByVal myConnectionInfo As ConnectionInfo)
    
    End Sub
    
    private void SetDBLogonForReport(ConnectionInfo connectionInfo)
    {
    }
    
  3. 在此方法内,从 CrystalReportViewer 类的 LogOnInfo 属性获取 TableLogOnInfos 实例。

<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>TableLogOnInfos 是包含 TableLogOnInfo 类实例的索引类。</p></td>
</tr>
</tbody>
</table>

``` vb
Dim myTableLogOnInfos As TableLogOnInfos = myCrystalReportViewer.LogOnInfo
```

``` csharp
TableLogOnInfos tableLogOnInfos = crystalReportViewer.LogOnInfo;
```
  1. 创建一个 foreach 循环,它在 TableLogOnInfos 索引类实例的各个 TableLogOnInfo 实例间循环。

    For Each myTableLogOnInfo As TableLogOnInfo In myTableLogOnInfos
    
    Next
    
    foreach(TableLogOnInfo tableLogOnInfo in tableLogOnInfos)
    {
    }
    
  2. 在 foreach 循环中,将 TableLogOnInfo 的 ConnectionInfo 属性设置为 ConnectionInfo 参数。

    myTableLogOnInfo.ConnectionInfo = myConnectionInfo
    
    tableLogOnInfo.ConnectionInfo = connectionInfo;
    

修改 ConfigureCrystalReports() 方法以处理数据库登录代码

此过程创建了用于设置数据库登录的方法。但是,必须修改 ConfigureCrystalReports() 方法以处理此方法,这样报表才能识别出其中含有数据库登录信息。

修改 ConfigureCrystalReports() 方法需要两个步骤:

  • 配置 ConnectionInfo 实例。
  • 调用 SetDBLogonForReport() 方法。
  1. 在 ConfigureCrystalReports() 方法中,在将报表绑定到 CrystalReportViewer 控件的代码之下声明并实例化 ConnectionInfo 类。

    Dim myConnectionInfo As ConnectionInfo = New ConnectionInfo()
    
    ConnectionInfo connectionInfo = new ConnectionInfo();
    
  2. 在下一行上,通过传入 ConnectionInfo 实例调用 SetDBLogonForReport() 方法。

    SetDBLogonForReport(myConnectionInfo)
    
    SetDBLogonForReport(connectionInfo);
    
  3. 设置 ConnectionInfo 实例的 DatabaseName、UserID 和 Password 属性。

<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>出于安全性考虑,使用访问权限受到限制的数据库帐户非常重要。有关更多信息,请参见<a href="ms227498(v=vs.90).md">“安全性:创建受限访问数据库帐户”</a>。</p></td>
</tr>
</tbody>
</table>

在编写的代码中,用自己的密码代替示例密码 1234(如下所示)。

``` vb
myConnectionInfo.DatabaseName = "Northwind"
myConnectionInfo.UserID = "limitedPermissionAccount"
myConnectionInfo.Password = "1234"
```

``` csharp
connectionInfo.DatabaseName = "Northwind";
connectionInfo.UserID = "limitedPermissionAccount";
connectionInfo.Password = "1234";
```

测试 NorthwindCustomers 报表的加载过程

现在即可生成并运行项目。由于已经添加了登录数据库的代码,现在应该能够正确加载报表了。

  1. 从“生成”菜单中选择“生成解决方案”。

  2. 如果生成过程中出错,请立即纠正。

  3. 从“调试”菜单中,单击“开始”。

NorthwindCustomers 报表将成功显示。
  1. 返回到 Visual Studio,然后单击“停止”从调试模式中退出。