• ActiveReports 报表应用教程 (8)---交互式报表之动态过滤


    用户可以使用ActiveReports参数 (Parameters)集合把数据提供给报表中的文本框或图表,也可以选择数据的一个子集显示到报表的特定区域,或者是把数据从主报表象子报表传递。用户可以通过三种方式获取数据的值:提示用户输入;从主报表取值并传递给子报表;从Windows form或者Web form上取值。

    1、创建报表文件

    在应用程序中创建一个名为 rptOrderDetails.rdlx 的 ActiveReports 报表文件,使用的项目模板为 ActiveReports 页面报表,创建完成之后从 VS 的报表菜单项中选择转换为连续页面布局(CPL)报表,将固定页面报表转换为连续页面报表。

    2、打开报表资源管理器,在参数节点中添加以下三个报表参数

    image

    3、打开报表资源管理器,并按照以下信息创建报表数据源

    image

    4、 添加数据集

    在新建的 NWind_CHS 数据源上鼠标右键并选择添加数据集菜单项

    4.1、添加数据集参数

    image

    说明:在添加参数设置值属性时,可以点击下拉列表,并选中 表达式 选项,然后在表达式编辑对话框中设置参数的值

    ActiveReports 报表功能展示 表达式编辑器

    4.2、设置数据集其他属性

    常规-名称:Products

    查询-查询:

    SELECT 产品.*,类别.类别名称,类别.说明 AS 类别说明,类别.图片 AS 类别图片, 供应商.公司名称 AS 供应商,供应商.联系人姓名,供应商.城市,供应商.地址

    FROM (供应商 INNER JOIN 产品 ON 供应商.供应商ID = 产品.供应商ID) INNER JOIN 类别 ON 产品.类别ID = 类别.类别ID
    ORDER BY 产品.类别ID;

    设置Products数据集的目的是为用户提供产品名称的选择,如最终运行图的左上角所示,因此我们需要为最开始设置的报表参数中的参数1设置可选值,右键点击报表参数1,修改,选择可选值标签,设置信息:

    image

    查询-查询:

    SELECT

    订单.订单ID, 订单.客户ID, 订单.订购日期, 产品.产品名称,订单明细.数量, 订单明细.单价, 订单明细.折扣

    from

    (( 订单

    innerjoin

    订单明细

    on

    订单.订单ID = 订单明细.订单ID )

    innerjoin

    产品

    on

    订单明细.产品ID = 产品.产品ID )

    where

    (订单明细.产品ID

    in

    (?)

    or

    -1

    in

    (?))

    and

    DateDiff("d",?,订购日期) > 0

    and

    DateDiff("d",?,订购日期) < 0

    ORDERBY

    订单.订单ID;

    说明:在以上查询语句 Where 条件中使用了参数查询,参数使用的是 ? 占位,? 的出现顺序需要与数据集参数中定义的参数顺序一致。同时, ? 是 Access 中的查询参数设置方式, SQL Server 中需要使用以 @ 开始的字符串作为参数。

    5、设计报表界面

    从 Visual Studio 工具箱中将 Table 控件添加到报表设计界面,并将 OrderDetails 数据集中的字段拖拽到 Table 的相应列中,得到的设计界面如下:

    ActiveReports 报表功能展示 页面报表

    6、运行程序

    通过 F5 键运行程序,在参数面板中输入值之后,点击查看报表按钮,将得到以下结果:

    ActiveReports 报表功能展示 报表参数

    7、自定义报表参数面板

    ActiveReports 报表处理支持内置的报表参数面板,您还可以提供独立于报表Viewer控件的自定义报表参数面板,类似的实现效果如下:

    ActiveReports 自定义报表参数面板

    然后在“运行报表”按钮的Click事件中实现报表参数的设置并运行报表:

        protected void btnRun_Click(object sender, EventArgs e)
        {
            GrapeCity.ActiveReports.PageReport report1 = new GrapeCity.ActiveReports.PageReport(new System.IO.FileInfo(Server.MapPath("PageReport1.rdlx")));
            report1.Report.ReportParameters[0].DefaultValue.Values.Add(txtParam.Text);
     
            WebViewer1.Report = report1;
        }

    源码下载地址:

    http://www.gcpowertools.com.cn/products/activereports_demo.htm

  • 相关阅读:
    截取字符串时长度的问题
    《Asp.Net 2.0 揭秘》读书笔记(三)
    gmail的相关参数
    《Asp.Net 2.0 揭秘》读书笔记(四)
    《Asp.Net 2.0 揭秘》读书笔记(五)
    《Asp.Net 2.0 揭秘》读书笔记(一)
    今夜,我又坐在电脑面前想你
    如果你是一名经理,你必须履行经理的四项职责
    向明月买醉
    想找个人真心真意过一生
  • 原文地址:https://www.cnblogs.com/C1SupportTeam/p/ActiveReports-Parameter-20130703001.html
Copyright © 2020-2023  润新知