zoukankan      html  css  js  c++  java
  • ReportViewer矩阵报表

    用矩阵报表来观察2002-2003年各季度货物的销售情况:

     

    将下面的图存到工程的目录下(与Data.xml在同一目录),取名为logo.jpg:

     

    ReportViewer教程(15)-矩阵报表-4

     

       在”解决方案资源管理器”中的项目上右击,添加->新建项->报表,新建一个RDLC报表,取名为Report1.rdlc 。

       在报表设计中,从工具箱中分别拖入“矩形”、“文本框”和“图像”到报表设计画面上。

    将“文本框”和“图像”放入“矩形”中。

    在“文本框”中输入”Adventure Words 2002-2003 Sales”,并将字体和颜色作适当调整;

    调出报表的属性页,在EmbeddedImages 一行点击,如下图:

    ReportViewer教程(15)-矩阵报表-4

    点击后调出”嵌入图像”对话框,在其上点击”新建图像”,找到logo.jpg文件,点打开,如下图:

     

    ReportViewer教程(15)-矩阵报表-4
    嵌入图像对话框上点确定
    ReportViewer教程(15)-矩阵报表-4

    重新回属性页,在下拉按钮中选“image1 图像”:

    ReportViewer教程(15)-矩阵报表-4

    Source行选“Embedded”,Value行选”logo” 。

    ReportViewer教程(15)-矩阵报表-4

     

    从工具箱中拖入“矩阵”到报表设计画面上。

    右击“解决方案资源管理器”中的”Report1.rdlc”,选“打开方式”->“XML编辑器”,

    打开“Report1.rdlc”后,在第三行前面插入下面的代码:

       <DataSources>
        <DataSource Name="TempDataSource">
          <ConnectionProperties>
            <ConnectString />
            <DataProvider>SQL</DataProvider>
          </ConnectionProperties>
        </DataSource>
      </DataSources>
      <DataSets>
        <DataSet Name="Sales">
          <Query>
            <DataSourceName>TempDataSource</DataSourceName>
            <CommandText />
          </Query>
          <Fields>
            <Field Name="ProdCat">
              <DataField>ProdCat</DataField>
            </Field>
            <Field Name="SubCat">
              <DataField>SubCat</DataField>
            </Field>
            <Field Name="OrderYear">
              <DataField>OrderYear</DataField>
            </Field>
            <Field Name="OrderQtr">
              <DataField>OrderQtr</DataField>
            </Field>
            <Field Name="Sales">
              <DataField>Sales</DataField>
            </Field>
          </Fields>
        </DataSet>
      </DataSets>

    保存并关闭这个代码编辑画面。

    回到“Report1.rdlc”设计画面,

    RDLC报表设计器中,在菜单上->报表->数据源,打开“报表数据源”,就可以看到有报表数据源“Sales”了:

     

    ReportViewer教程(15)-矩阵报表-5

    ReportViewer教程(15)-矩阵报表-5

        在矩阵的外框的虚线上右击调出矩阵属性对话框,在“常规”选项卡中,

    输入(选择)数据集名称为“Sales”:

    ReportViewer教程(15)-矩阵报表-5

    选“组”选项卡,选中“matrix1_RowGroup 1

     

    ReportViewer教程(15)-矩阵报表-5

    点击“编辑”后,将名称改为“matrix1_ProdCat”,表达式为:=Fields!ProdCat.Value ,如下图:
    ReportViewer教程(15)-矩阵报表-5 

     点确定关闭分组和排序属性对话框后,在矩阵属性对话框点添加来添加一个行组,

    名称为:“matrix1_SubCat”,表达式为:”=Fields!SubCat.Value” :

    ReportViewer教程(15)-矩阵报表-6

    确定后,再依法将列组分别置为名称为:matrix1_OrderYear 和 matrix1_OrderQtr ,

    它们的表达式分别为: =Fields!OrderYear.Value =Fields!OrderQtr.Value ,如下图:

    ReportViewer教程(15)-矩阵报表-6

    按确定后退出矩阵属性对话框:

    ReportViewer教程(15)-矩阵报表-6

        将(上图)矩阵最下边一行的三个单元格分别改名为(右击单元格->属性)

    ProdCat, SubCat,Sales

    右边二个单元格从上开始分别改名为:

    OrderYear ,OrderQtr

     

    其中单元格ProdCat的值为: =Fields!ProdCat.Value

    单元格Sales的值为:  =Sum(CDbl(Fields!Sales.Value))

    单元格OrderYear的值为: =Fields!OrderYear.Value

    在单元格OrderYear的可见性选项卡中将“此报表项关联图像的初始外观”置为“展开”;

    将分别将单元格ProdCat, SubCat OrderYear ,OrderQtr属性(按F4调出属性)

    BackgroundColor 中的值改为:RoyalBlue ,

    Color中的值改为:White

     ReportViewer教程(15)-矩阵报表-6

    重新调出矩阵属性对话框,在组选项卡中编辑matrix1_SubCat行组,打开分组排序属性对话框后,

    在其中选“可见性”选项卡,将初始可见性选为隐藏,勾选“可由其它关联报表项确定其可见性”,在“报表项”选择“ProdCat;

    在组选项卡中编辑matrix1_OrderQtr列组,打开分组排序属性对话框后,

    在其中选“可见性”选项卡,将初始可见性选为可见,勾选“可由其它关联报表项确定其可见性”,在“报表项”选择“OrderYear”。

       在Form1窗口设计中,拖入一个ReportViewer控件,

    最后调出Form1代码窗口,下面是VB.net中Form1.vb的全部代码:

    Imports Microsoft.Reporting.WinForms
    Public Class Form1
        Private Function LoadSalesData() As DataTable
            Dim DS As DataSet = New DataSet

            DS.ReadXml("..//..//data.xml")
            Return DS.Tables(0)

        End Function
        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            Me.ReportViewer1.Reset()
            ReportViewer1.LocalReport.DataSources.Clear()
            ReportViewer1.LocalReport.DataSources.Add(New ReportDataSource("Sales", LoadSalesData()))

            ReportViewer1.LocalReport.ReportPath = "..//..//report1.rdlc"
            Me.ReportViewer1.RefreshReport()
        End Sub
    End Class

        这样矩阵报表就好了。运行后见下图:

    ReportViewer教程(15)-矩阵报表-6

     

  • 相关阅读:
    【一句日历】2020年3月
    写给我们项目总监的一些话
    基于ajax 的 几个例子 session ,ajax 实现登录,验证码 ,实现ajax表单展示
    day 51 随机验证码, 验证登陆 ,以及 装饰器在函数中的应用
    day 51 cooike 与 session
    day 50 AJAX 初入门
    day 38 jq 入门 学习(一)
    转的大佬的 学习方法
    day 49 数据分析, 数据聚合 F 查询 Q 查询
    day 48 ORM 进阶 多表连接 创建 以及 html模板继承
  • 原文地址:https://www.cnblogs.com/millen/p/1945216.html
Copyright © 2011-2022 走看看