【问题标题】:How to get Year from Date Report Parameter-Birt Report如何从日期报表参数获取年份-Birt Report
【发布时间】:2013-04-16 08:05:20
【问题描述】:

我创建了一份 birt 报告。它包含一个名为“FromDate”的报告参数。用户将其插入到 fromat 中,例如“dd/MM/yyyy”。我想从这个输入参数中获取年份(如果日期是 11/01/2013。我想从这个变量中提取 2013 年)并希望将此值传递给一个存储过程(即数据集)。我该怎么做。任何人都可以分享示例代码

【问题讨论】:

标签: java reporting birt


【解决方案1】:

您可以像这样定义一个变量“selectedYear”:

var selectedValue = params["FromDate"].value;
var selectedValueArray = selectedValue.split("/");
selectedValueArray[2]

此代码通过“切割”/'s 上的参数值创建一个数组,然后选择年份(数组中的第二个值,这是我们从零开始计数的第三个块)。

然后您可以在您的数据集上使用vars["selectedYear"]

或者,如果您的数据集包含年份列表,您可以创建一个数据集

select distinct YEAR
from [dataSource]

并从该列表中选择您的参数。这也将保证所选年份在范围内。

【讨论】:

  • 如果您定义了一个包含上述代码块的变量'"selectedYear",您可以通过添加属性绑定(通过数据集编辑器)在您的数据集中使用它:"select (what ever you like) from (the table you want) where year = " + vars["selectedYear"]。跨度>
【解决方案2】:

您可以在编辑数据集对话框的参数部分将数据集参数映射到报告参数派生值:

  • 从数据集参数列表中选择存储过程年份输入参数,点击Edit...
  • 点击默认值旁边的fx按钮并选择Javascript Syntax
  • 输入公式BirtDateTime.year(params["FromDate"].value)

单击“确定”以在每个对话框中确认这些更改。 (对于该数据集参数,Linked To Report Parameter 选项需要保留为 None,因为您不想将过程输入参数值设置为与任何 Report Parameters 完全相同。)

【讨论】:

    【解决方案3】:

    过去我也遇到过类似的问题,但是我从不同的角度看待从存储在数据源中的日期作为动态参数驱动日期选择。通常,数据集中的日期格式可以通过函数格式化/提取以给出年月日等。

    【讨论】:

      【解决方案4】:

      我试过这个..在相应的存储过程中,我将对输入参数(即 FromDate)做一个子字符串..它正在工作

      【讨论】:

      • 而不是像这样使用,转到您的报告并选择相应的单元格,然后在属性窗口中找到 Format DATE TIME ,您可以根据需要自定义日期。
      • 您是否尝试过其他提供的答案?请注意,虽然此方法解决了您的潜在问题,但它实际上并没有回答所提出的问题。
      • 如果您仍然遇到问题,请尝试使用示例数据库(经典汽车)重新创建您想要的(或显示问题)。将报告发布到 birt-exchange.org 上,以便有人帮助您找到解决方案。
      • @vmb:您可以接受自己的答案来表明您的问题已解决。
      【解决方案5】:

      在sql查询(Data Set)中,使用这个

      "split_part(?,'/',3)" ,我们将有日期参数代替'?' .你必须知道,Split_part 将使用分隔符 '/' 分割字符串。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-16
        相关资源
        最近更新 更多