演练:在本地处理模式下将数据库数据源与 ReportViewer Windows 窗体控件一起使用

本演练演示如何在 Microsoft Visual Studio 2008 Windows 应用程序项目中创建报表,以及如何将 ReportViewer 控件添加到 Windows 窗体中,以便该应用程序的用户可以查看报表。

系统必备

若要使用本演练,您必须有权访问 AdventureWorks 示例数据库。有关更多信息,请参见演练:安装 AdventureWorks 数据库

执行下列步骤可将报表添加到 Visual Studio Windows 应用程序项目中。对于本示例,在 Microsoft Visual Basic 中创建应用程序。

创建一个新的 Windows 应用程序项目

  1. 打开 Visual Studio 2008。在**“文件”菜单上,指向“新建”,然后选择“项目”**。

  2. 在“项目类型”窗格中,选择 Visual Basic

  3. 在“模板”窗格中,选择**“Windows 应用程序”**以创建 Microsoft Windows 应用程序。

  4. 在**“名称”**框中,键入项目的名称:ReportWalkthrough

  5. 在**“位置”框中,输入要保存项目的目录,或者单击“浏览”以导航到该目录。随即会打开 Windows 窗体设计器,其中将显示所创建的项目的“Form1.vb”**。

定义数据源连接和 DataTable

  1. 在**“项目”菜单上选择“添加新项”**。

  2. 在**“添加新项”对话框中,单击“数据集”**。

  3. 为数据集输入名称,再单击**“添加”。这会向项目中添加一个新的 XML 架构文件并打开数据集设计器。默认名称为“DataSet1.xsd”**。

  4. 在数据集设计器模式下,打开工具箱,然后将 TableAdapter 拖至数据集设计图面。这样将打开 TableAdapter 配置向导。

  5. 在**“选择您的数据连接”页中,单击“新建连接”**。

  6. 在**“数据源”对话框中,选择 Microsoft SQL Server。在“服务器名称”对话框中,输入 AdventureWorks 所在的服务器。从数据库下拉列表中选择“AdventureWorks”,然后单击“确定”**继续向导的下一页。

  7. 在**“将连接字符串保存到应用程序配置文件中”页上,为连接字符串键入名称或接受默认的“AdventureWorksConnectionString”。单击“下一步”**。

  8. 在**“选择命令类型”页上,选择“使用 SQL 语句”**。确认未选择其他单选按钮。

  9. 在**“输入 SQL 语句”页上,输入以下 Transact-SQL 查询以从 AdventureWorks 数据库中检索数据,然后单击“完成”。也可以单击“查询生成器”按钮,使用查询生成器创建自己的查询,并使用“执行查询”**按钮检查所创建的查询。

    SELECT d.name as Dept, s.Name as Shift, e.EmployeeID as EmployeeID
    FROM (HumanResources.Department d
    INNER JOIN HumanResources.EmployeeDepartmentHistory e
        ON d.DepartmentID = e.DepartmentID)
    INNER JOIN HumanResources.Shift s
        ON e.ShiftID = s.ShiftID
    

    如果查询未返回所需的数据,则说明您可能正在使用 AdventureWorks 的早期版本。有关安装 AdventureWorks 的 SQL Server 2005 版本的更多信息,请参见演练:安装 AdventureWorks 数据库

  10. 在**“选择要生成的方法”页上,接受默认值“填充 DataTable”“方法名称”“Fill”)和“返回 DataTable”“方法名称”“GetData”)。单击“下一步”**。

  11. 在**“向导结果”页上,单击“完成”**。

  12. 在“数据集设计器”页上,应显示**“DataTable1”,其中列出了从查询中得到的列。从“数据”菜单中,选择“显示数据源”,然后展开 DataTable1 节点来查看这些列。下一步是将数据绑定到报表,此步骤将使用“数据源”**窗口以及“Dept”、“Shift”和“EmployeeID”字段。

设计报表

  1. 在**“项目”菜单上选择“添加新项”**。

  2. 在**“添加新项”对话框中,单击“报表”**。

  3. 为报表文件输入一个名称。默认情况下,报表名称为**“Report1.rdlc”。单击“添加”**。随即会打开报表设计器,其中将显示表示报表页的虚线图面。

  4. 打开“工具箱”。单击文本框,然后单击窗体。

  5. 在文本框中输入报表标题:“每个部门每次换班的雇员数”

  6. 从“工具箱”中将**“矩阵”**报表项拖动到文本框下的报表上。

  7. 在“数据源”窗口中,展开**“DataTable1”,以查看“Dept”、“Shift”和“EmployeeID”列。将“Dept”字段拖动到矩阵第一列第二行的“行”**文本框上。

  8. 将“Shift”字段拖动到矩阵第二列第一行的**“列”文本框上。让该文本框处于选中状态,并将“TextAlign”属性设置为“右”。单击“报表格式”工具栏上的“B”**图标,以使用粗体。

  9. 单击矩阵中的任意位置,以选择矩阵数据区域。然后单击右键,并按名称选择矩阵(默认值为 matrix1)。矩阵报表项周围将显示一个轮廓。右击该轮廓,然后选择**“属性”。检查所打开的对话框的标题是否为“矩阵属性”**。

  10. 单击**“组”选项卡。在“列”部分中,单击“编辑”**。

  11. 在**“排序与分组”对话框中,单击“排序”**选项卡。

  12. 单击**“表达式”下的第一个框以激活该文本框,然后单击向下箭头并选择“=Fields!Dept.Value”**。这样可以确保按照部门名称对报表数据进行排序。

  13. 从**“数据源”窗口中,将“EmployeeID”字段拖动到矩阵第二列第二行的“数据”文本框上。右击此文本框,然后选择“属性”**。

  14. 在**“常规”选项卡上的“属性”**窗口中,单击表达式按钮 (fx),以调用表达式编辑器。

  15. 编辑默认的 Sum 聚合函数并将它更改为 Count。通过右击该文本框并选择**“属性”**,可以调用表达式编辑器。该表达式应显示为:

    =Count(Fields!EmployeeID.Value)
    

向应用程序添加 ReportViewer 控件

  1. 在解决方案资源管理器中,右击**“Form1.vb”,然后选择“查看设计”**,以便在设计模式下打开窗体。

  2. 在**“窗体”属性窗口中,单击“+”以展开“大小”属性。将窗体的“高度”**设置为 700。

  3. 在 Visual Studio 工具箱的“数据”部分中,单击**“ReportViewer”**图标,再单击窗体。根据需要调整窗体宽度和 ReportViewer 控件宽度。

  4. 通过单击右上角的三角形来打开 ReportViewer 控件的智能标记面板。单击**“选择报表”**下拉列表,然后选择 Report1.rdlc。选择报表将导致自动创建报表中使用的数据源实例。将生成代码以实例化与报表中使用的每个数据源相对应的 DataSetDataTable 的 ADO.NET 容器)、TableAdapter 组件和 BindingSource 对象。

  5. 在打开的智能标记面板中,选择**“在父容器中停靠”**。

编译和运行应用程序

  1. 在**“生成”菜单上,单击“生成 ReportWalkthrough”。在生成过程中,将编译报表。如果将某些错误(例如报表中所用的表达式中的语法错误)添加到“任务列表”**中,可以标记出这些错误。

  2. 按**“F5”**运行应用程序并在窗体中查看报表。

另请参见

参考

Microsoft.Reporting.WinForms.ReportViewer.Drillthrough
Microsoft.Reporting.WinForms.LocalReport.SubreportProcessing
Microsoft.Reporting.WebForms.ReportViewer.Drillthrough
Microsoft.Reporting.WebForms.LocalReport.SubreportProcessing

概念

使用“ReportViewer 任务”智能标记面板

其他资源

示例和演练