HWH....

导航

 

示例和演练  

演练:安装 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”)。在将数据绑定到报表数据区域时,将在“数据源”窗口中用到这些字段.

    如下图:

        


添加新报表定义文件

  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”

    默认报表定义表

向窗体中添加 ReportViewer 控件

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

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

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

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

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

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

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

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

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

    已呈现报表中的默认表

设置数据字段的格式

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

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

设置表格表头的格式

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

    Note注意

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

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

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

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

    格式化的默认表视图

为表格格式报表定义组

  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()

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

    组文本框的“编辑表达式”对话

     

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

    已处理报表中表组的视图

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

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

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

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

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

    =Count(Fields!SalesOrderNumber.Value)

  4. 单击“确定”

    “分组和排序”对话框

     

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

    排序后表组的视图

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

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

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

    Note注意

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

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

  4. 单击“确定”

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

    “表属性”对话,“排序”选项卡

     

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

    按详细信息行排序的已分组报表数据的视图


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

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

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

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

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

    =Sum(Fields!TotalSales.Value)

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

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

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

    下图显示了表定义。

    具有表尾的报表定义表

     

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

    具有表尾结果的表视图



posted on 2010-11-25 09:13  HWH....  阅读(1334)  评论(0编辑  收藏  举报