演练:安装 AdventureWorks 数据库

下载 adventureworksdb.msi.

1. 下载 AdventureWorks 示例数据库 ,AdventureWorksDB.msi
2. 单击“运行”并完成安装向导。AdventureWorks_Data.mdf 和 AdventureWorks_Log.ldf 将被复制到 SQL Server 数据目录中。对于 SQL Server 2005 Express,默认目录为 c:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\。

确认 SQL Server 数据目录

1. 打开一个 Visual Studio 2008 命令窗口。为此,请在“开始”菜单中依次单击“所有程序”“Microsoft Visual Studio 2008”“Visual Studio 工具”“Visual Studio 2008 命令提示”
2. 通过在命令行中键入或复制下面的命令,打开指向本地 SQL Server Express 实例的连接:
SQLCMD -S (local)\sqlexpress -E
3. 在 SQLCMD 提示符处,键入或复制下面的命令。
select physical_name from sys.database_files where name = 'master'
go
4. 此查询将返回 master.mdf 文件的位置,从而确认将放置 AdventureWorks 数据库文件的 SQL Server 数据目录。

将 AdventureWorks 附加到 SQL Server 中

1. 在“SQLCMD 1>”提示符处,调用 sp_attach_db 存储过程,以便附加上一步中所确定的数据目录中的 AdventureWorks 数据库。下面的代码使用 SQL Server 2005 Express 的默认位置。根据需要编辑该文本,以使用上述步骤中确认的数据目录。在命令窗口中键入下面的语句,或复制此语句并粘贴到命令窗口(语句中不能有换行符)
exec sp_attach_db @dbname=N'AdventureWorks', @filename1=N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AdventureWorks_Data.mdf', @filename2=N'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\AdventureWorks_log.ldf'
go
2. 去SQL SERVER MANAGEMENT STUDIO看一看数据库AdventureWorks是否添加上。

演练:创建 ReportViewer 报表

创建新的基于 Windows 的应用程序项目

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

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

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

  4. “名称”框中,键入“SimpleReport”

  5. “位置”框中,输入要保存项目的目录,或者单击“浏览”以导航到该目录。

    随即会打开 Windows 窗体设计器,其中将显示所创建的项目的“Form1”

  6. 单击该窗体。从“视图”菜单中选择“属性窗口”。展开“大小”属性,以显示“宽度”“高度”。将“宽度”设置为 500 像素。

定义数据源连接和数据表

  1. 在解决方案资源管理器中,右击名为“SimpleReport”的项目(并非解决方案),指向“添加”,然后选择“新建项”。如果“解决方案资源管理器”窗口不可见,请在“视图”菜单中单击“解决方案资源管理器”

  2. “添加新项”对话框中,单击“数据集”。为数据集键入名称,然后单击“添加”。默认名称为“DataSet1.xsd”

    这会向项目中添加一个新的 XSD 文件并打开数据集设计器。

  3. “视图”菜单中单击“设计器”。打开工具箱,然后将“TableAdapter”控件拖动到“数据集”设计图面上。

    这将启动“TableAdapter 配置向导”

  4. “选择您的数据连接”页中,单击“新建连接”

  5. “添加连接”页上,请执行下列步骤:

    • “数据源”框中,选择“Microsoft SQL Server”

    • “服务器名称”框中,输入 AdventureWorks 数据库所在的服务器。

      默认的 SQL Server Express 实例为“(local)\sqlexpress”

    • 在下拉列表中,单击“AdventureWorks”

    • 单击“确定”继续返回到向导,再单击“下一步”

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

  7. “选择命令类型”页上,选择“使用 SQL 语句”,然后单击“下一步”

  8. “输入 SQL 语句”页上,输入以下 Transact-SQL 查询以便从 AdventureWorks 数据库中检索销售数据,然后单击“完成”

    SELECT  S.OrderDate, S.SalesOrderNumber, S.TotalDue AS TotalSales,         C.FirstName, C.LastNameFROM    HumanResources.Employee E INNER JOIN        Person.Contact C ON E.ContactID = C.ContactID INNER JOIN        Sales.SalesOrderHeader S ON E.EmployeeID = S.SalesPersonID
    

    此外还可以单击“查询生成器”按钮,然后使用查询生成器创建查询并使用“执行查询”按钮加以验证。

    现在,数据集设计器将显示“DataTable1”的 DataTable 定义,其中各个字段均以查询的列和列别名命名(“OrderDate”“SalesOrderNumber”“TotalSales”“FirstName”“LastName”)。在将数据绑定到报表数据区域时,将在“数据源”窗口中用到这些字段.

    如下图:

        Report Viewer 学习(二)


添加新报表定义文件

  1. “项目”菜单中,指向“添加新项” 
  2. “添加新项”对话框中,单击“报表”
  3. “名称”中,键入“Sales Orders.rdlc”,然后单击“添加”打开图形设计图面。
  4. 图形设计图面是 Visual Studio 2008 中报表设计器组件的一部分

向报表布局中添加表

  1. “Sales Orders.rdlc”置于图形设计模式下,然后在“视图”菜单中选择“工具箱”。

    随即将打开工具箱。

  2. 在工具箱的“数据”部分中,单击“表”,然后单击报表设计图面。

    报表设计器将显示一个表,此表包含三列,横跨报表的整个宽度。

  3. 单击该表,以便在表的上方和旁边显示列句柄和行句柄。

  4. 在第一列上,右击句柄,然后单击“在左侧插入列”

  5. “table1”的“属性”窗口中,展开Size节点。默认情况下,“属性”窗口停靠在解决方案资源管理器下方。通过在“视图”菜单中选择“属性窗口”,也可以打开此窗口。

  6. Size节点的Width属性设置为“4.8 英寸”。这会将表宽和列宽设置为在窗体中进行查看时所需的空间。

  7. 在报表设计器中,单击设计图面。

  8. 在“属性”窗口中,展开“Size”节点并将“Width”设置为“5 英寸”

  9. 在“数据源”窗口中,单击“DataTable1”节点,以将其展开并显示各个数据字段。接下来,请执行下列步骤:

    • “数据源”窗口中的“LastName”字段拖动到表中第一列的中间(详细信息)行内。

    • 将字段拖至中间单元时,会发生两件事。

      首先,详细信息单元格将包含以下文本:“=Fields!LastName.Value”。此文本是一个字段表达式,用于为“LastName”字段指定数据值。添加到“详细信息”行的字段始终被指定为表达式。

      其次,列标题值自动放置在紧邻字段表达式上面的第一行。默认情况下,该列是根据相应的字段名称生成的。如果字段名称使用 Pascal 大小写格式,列名中的每个单词都将变为首字母大写,且单词之间用空格分隔。例如“LastName”将变为“Last Name”

    • 将“数据源”窗口中的“OrderDate”字段拖动到表中第二列的中间(详细信息)行内。

    • 将“数据源”窗口中的“SalesOrderNumber”字段拖动到表中第三列的中间(详细信息)行内。

    • 将“数据源”窗口中的“TotalSales”字段拖动到表中最后一列的中间(详细信息)行内。

    下图显示了已使用下列字段填充的表数据区域:“LastName”“OrderDate”“SalesOrderNumber”“TotalSales”

    Report Viewer 学习(二)

向窗体中添加 ReportViewer 控件

  1. 在解决方案资源管理器中单击“Form1.cs”

  2. “视图”菜单中选择“设计器”

  3. 在工具箱的“数据”部分中,将 ReportViewer 控件拖动到窗体上。

  4. 在该窗体中单击鼠标。在“属性”窗口中,展开“Size”。根据需要设置宽度和高度属性。

  5. 通过单击 ReportViewer 控件右上角的三角形,打开该控件的智能标记面板。单击“选择报表”下拉列表,然后选择“Sales Orders.rdlc”

  6. 在智能标记面板中,单击“在父容器中停靠”

    在本演练的剩余部分中,您可以随时生成应用程序并在窗体中查看报表。如果要查看报表设计的每次更改对最终报表的影响,可以在执行下面每个过程的最后一个步骤时都生成并查看报表。

  7. (可选)按 F5 生成应用程序并在窗体中查看报表。

    下图显示了当前在窗体中呈现的报表定义。您将看到一个标题行,数据表中的每一行都有一个详细信息行,报表的最后一页上显示一个页脚行,所有这些行都采用默认格式。

    Report Viewer 学习(二)

设置数据字段的格式

  1. 右击“OrderDate”字段表达式所在的单元格,然后单击“属性”。将显示“文本框属性”对话框。
  2. 选择“格式”选项卡,然后单击浏览(“…”)按钮打开“选择格式”对话框。
  3. “格式”框中,选择“标准”,再选择“日期”,然后选择一种日期格式。
  4. 单击“确定”关闭“选择格式”对话框,然后再次单击“确定”关闭“文本框属性”对话框 。
  5. (可选)按 F5 生成应用程序并查看报表。在本示例中,您将看到日期列已具有您刚才应用的格式。
          Report Viewer 学习(二)

    设置货币字段的格式
    1. 右击 TotalSales 字段表达式所在的单元格,然后单击“属性”
    2. 选择“格式”选项卡,然后单击浏览(“…”)按钮打开“选择格式”对话框。
    3. “格式”框中,选择“标准”,再选择“货币”,然后选择一种货币格式。
    4. 单击“确定”,然后再次单击“确定”关闭“文本框属性”对话框。
    5. (可选)按 F5 生成应用程序并查看报表
        Report Viewer 学习(二)

    设置表格表头的格式

    1. 单击该表,以便在表的上方和旁边显示列句柄和行句柄。

      Report Viewer 学习(二)注意

      句柄是显示在表的上方和旁边的灰框。您可以使用句柄对列、行和表本身执行各种操作。穿过表顶部上下拉伸的句柄是列句柄。沿着表一侧拉伸的句柄是行句柄。列句柄和行句柄的交汇处是角部句柄。

    2. 选择第一行(包含列标题标签)的行句柄,然后单击“加粗”

    3. 单击表的标题行,然后单击“背景色”。单击“Web”选项卡,然后选择“粉红玫瑰”。单击“确定”

    4. (可选)单击 F5 生成应用程序并查看报表。下图显示了设置了格式的报表。

      Report Viewer 学习(二)

    为表格格式报表定义组

    1. 单击该表,以便在表的上方和旁边显示列句柄和行句柄。

    2. 右击任何行的句柄,再单击“插入组”

    3. “常规”选项卡上的“分组方式”框中,在第一行选择 =Fields!LastName.Value,在第二行选择 =Fields!FirstName.Value。这会按销售人员的姓名对数据分组。请注意,您可以按照表数据区域中未使用但出现在“DataTable1”字段中的字段对数据分组。

    按组汇总数据

    1. 单击组的标题行,然后单击“背景色”。选择“Web”选项卡,然后选择“浅青色”。单击“确定”

    2. 将每行中重复的“TotalSales”替换为组头中汇总组数据的表达式。

      1. 右击“Total Sales”的组头,然后选择“属性”。随即将打开“文本框属性”对话框。

      2. 复制下面的文本并将其粘贴到“值”下拉列表中。

        =Sum(Fields!TotalSales.Value)
      3. 向此文本框应用货币格式。

    3. 将每行中重复的名称替换为组头中包含两行内容的表达式。第一行是名字和姓氏。第二行是非空的销售量。

      1. 选择“Last Name”详细信息行中的表达式,然后将其删除。

      2. 右击“Last Name”的组标题行,然后选择“表达式”。复制下面的文本并将其粘贴在“编辑表达式”对话框区域中。

        Fields!FirstName.Value + " " + Fields!LastName.Value + ": " + vbCrLf + Count(Fields!SalesOrderNumber.Value).ToString()

      下图显示了执行此步骤后的表达式编辑器。

      Report Viewer 学习(二)

       

    4. (可选)按 F5 生成应用程序并查看报表。下图显示了按每个销售人员的姓名分组后的表行。每个组头汇总相应组的详细信息行,其中显示销售人员的姓名、销售量和总销售额。

      Report Viewer 学习(二)

    对表格格式报表中的组进行排序

    1. 选择表数据区域并打开“表属性”

    2. 单击“组”选项卡。将自动选择唯一定义的组“table1_Group1”。单��“编辑”。随即将打开“分组和排序”对话框。

      验证打开的对话框是“分组和排序属性”而非“表属性”“表属性排序”选项卡控制的是详细信息行的排序方式,而非组的排序方式。在下一过程中,您将设置详细信息行的排序。

    3. 单击“排序”选项卡。在“排序方式”框中的下拉列表中,选择“<表达式...>”。在“编辑表达式”框中,键入要用作排序依据的表达式。例如:

      =Count(Fields!SalesOrderNumber.Value)

    4. 单击“确定”

      Report Viewer 学习(二)

       

    5. (可选)按 F5 生成应用程序并查看报表。现在,您的报表已按每个销售人员的销售量排序。

      Report Viewer 学习(二)

    在表格格式报表中对组内的详细信息行进行排序

    1. 单击该表,以便在表的上方和旁边显示列句柄和行句柄。

    2. 右击角部句柄,再单击“属性”按钮。随即将打开“表属性”对话框。

      Report Viewer 学习(二)注意

      角部句柄是指列句柄和行句柄交汇处的句柄。

    3. “排序”选项卡上的“排序方式”框中,选择“=Fields!TotalSold.Value”。在“方向”框中,选择“降序”。这将按销售额对明细数据排序,并在第一行显示最大的值。

    4. 单击“确定”

      “表属性”对话框的外观应类似于下图。

      Report Viewer 学习(二)

       

    5. (可选)按 F5 生成应用程序并查看报表。下图显示了所得报表的第 2 页,以演示具有多个详细信息行的组。

      Report Viewer 学习(二)


    在表格格式报表的页脚中添加汇总数据

    1. 在表尾行中,选择“Sales Order”和“Total Sales”单元格。在选定的单元格中单击右键,然后选择“合并单元格”

      这将提供更多的空间来设置表中销售总和的格式。

    2. 在合并后的单个单元格中单击右键,然后选择“属性”

    3. “值”下拉列表中,键入以下表达式:

      =Sum(Fields!TotalSales.Value)

    4. 向合并后的单元格应用货币格式。

    5. 在合并单元格旁边的文本框单元格中单击鼠标,然后创建一个标签。例如,键入“Total Sold:”。请注意,这完全是文本,而非表达式。

    6. (可选)设置页脚行的背景色,使之与标题行的背景色匹配。

      下图显示了表定义。

      Report Viewer 学习(二)

       

    7. (可选)按 F5 生成应用程序并查看报表。在呈现的报表中,单击报表工具栏上的“最后一页”按钮,以导航至报表的最后一页。滚动到底部,您将看到总销售额。

      Report Viewer 学习(二)



    相关文章: