【问题标题】:How to default value of java.util.Date type parameter in ireport?如何在 ireport 中设置 java.util.Date 类型参数的默认值?
【发布时间】:2018-10-12 14:36:39
【问题描述】:

在 iReport 中,我想将 java.util.Date 类型参数的默认值设置为“2009 年 9 月 8 日”。

我尝试用双引号将该值设置为new java.util.Date(2009,9,8)new java.util.Date(1252348200)new java.util.Date("08-09-2009"),但这些都不起作用。

如何设置日期参数的默认值?

【问题讨论】:

  • 如果这是静态的,那为什么要使用Text Field,你可以写成静态文本
  • 这不是String 类型参数。这是java.util.Date 类型参数。
  • 已经3年多了。你有没有得到这个答案?我似乎在这里的答案中找不到任何有用的东西。

标签: java date jasper-reports default


【解决方案1】:

您需要创建新参数,将其类型设置为 java.util.Date 并将文本字段的表达式添加为

new SimpleDateFormat("dd MMMM, yyyy").format($P{dateParameter})

当您单击预览时,将出现一个输入弹出窗口。

更多

添加新参数:

点击 Window -> Report Inspector(新调色板将在左侧面板上打开)右键点击参数 -> 添加参数 -> 然后从其属性中将参数类设置为“java.util.Date”

设置为表达式:

打开字段的表达式编辑器(右键单击 -> 编辑表达式)并粘贴

new SimpleDateFormat("dd MMMM, yyyy").format($P{dateParameter})

【讨论】:

  • @varun 它的dd MMMM, yyyy08 September, 2009
  • 好的。我在默认值表达式中使用了此代码new SimpleDateFormat("dd MMMM, yyyy").format("08 September, 2009"),但它不起作用。
  • 我评论中的第一件事。我在问你如果你想在你的报告中固定日期,像这样你为什么想要参数?只是将它用作静态文本有什么问题?由于这是文本字段,因此它需要一个日期中的 db 列。
  • 我不想在报告中固定日期,而只想在用户看到输入提示时在参数中使用默认值。
  • 已编辑,比您需要为其添加新参数
【解决方案2】:

使用日历

    Calendar c = Calendar.getInstance();
c.set(2009, 8, 8);
Date d = c.getTime();

【讨论】:

  • c.set(2009, Calendar.SEPTEMBER, 8);更清楚,因为月份是从 0 开始的
  • @Nitin 我应该在参数中写你的整个代码吗?
  • 这是一个错误的解决方案。问题是关于 JasperReports 的表达方式
【解决方案3】:

根据Nitin Dandriyal's answer

您可以使用 GroovyShell 在默认值表达式中使用此代码,如下所示:

new groovy.lang.GroovyShell().evaluate("Calendar cal = Calendar.getInstance(); cal.set(2009, 8, 8); return cal.getTime(); ")

更新:

【讨论】:

  • ; 不允许在默认值表达式中使用
  • 我知道,分号只用在scriptText中,它返回一个日期结果。
  • 知道了。但这仍然行不通。我已经检查了用作提示
  • iReport 没有显示任何错误,但在提示用户时显示当前日期为默认值。
  • 使用按钮“使用默认值!”,然后您将成为报告中的默认值
【解决方案4】:

将字段/参数 DATE_OBJ(java.util.Date) 和参数 dateFormat(java.text.DateFormat) 传递给报告。您可以使用日历在 DATE_OBJ 上设置所需的日期 那么下面的表达式应该打印你的日期。

【讨论】:

    【解决方案5】:

    我找不到任何直接执行此操作的方法,但有一个解决方法:

    1) 首先将参数的类型设为String 而不是Date

    2) 然后为日期文字输入Default value expression,如下所示:"2018-01-23"

    3) 最后,使用类似以下的内容,可能需要针对您使用的 SQL 类型进行调整:

    • 对于 MariaDB(或 MySQL)SQL 使用:STR_TO_DATE($P{From},"%Y-%m-%d"),您需要先将“From”替换为实际参数的名称。

    这使您可以轻松地将默认值编辑为字符串,然后将其用作 SQL 中的日期类型。


    SQL 使用示例:

    `WHERE `journal`.`Date` >=  STR_TO_DATE($P{From},"%Y-%m-%d")`
    

    【讨论】:

      【解决方案6】:

      不推荐使用具有三个参数的 Date 构造函数:年、月和日。。您应该改用 GregorianCalendar 类。但是,如果您确实需要 Date 对象,请使用 getTime();从 GregorianCalendar 实例返回 Date 对象的方法。

      GregorianCalendar gc = new GregorianCalendar(2009, Calendar.SEPTEMBER, 8);
      Date myDate = gc.getTime();
      

      【讨论】:

      • ; 不允许在默认值表达式中使用
      • 我不明白你的意思。我给你的代码有问题吗?
      • iReport 说 Invalid character ; 当我在默认值表达式中写 ; 时。
      • 什么是 iReport o_O?
      • 我想为 iReport 中的参数设置默认值。
      猜你喜欢
      • 2021-12-24
      • 1970-01-01
      • 2018-11-27
      • 1970-01-01
      • 1970-01-01
      • 2018-07-21
      • 2017-02-06
      • 2021-09-11
      • 1970-01-01
      相关资源
      最近更新 更多