You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java调用Crystal Reports已设必填参数仍提示缺失参数

问题:Crystal Report旧SDK生成PDF时日期参数导致"Missing parameter values"报错

背景

因限制需使用旧SDK通过BO生成Crystal Report PDF,某报表包含2个必填日期参数、4个可选参数,但持续报错:

Can not create temp file: Missing parameter values.

已完成的排查操作

  1. 验证参数属性
    已通过以下代码遍历并输出所有参数的属性(日志确认必填参数标识正确):
PropertyBag propertyBag = new PropertyBag();
propertyBag.put("IncludeDynamicOnly", "false");
Fields<?> fields = paramController.getPromptParameterFields(propertyBag);

遍历输出参数属性的日志代码:

log.info("name: '{}'", f.getName());
log.info("type: '{}'", f.getType().toString());
log.info("multi-value: {}", f.getAllowMultiValue());
log.info("hasValue: {}", hasValue);
log.info("allow null: {}", f.getAllowNullValue());
log.info("required: {}", isRequired);
log.info("kind: '{}'", f.getKind().toString());
  1. 设置必填参数值
    已为两个必填日期参数设置值:
ParameterFieldController parameterFieldController = reportDocument.getDataDefController().getParameterFieldController();
parameterFieldController.setCurrentValue("", "From Posted Date", Date.valueOf("1950-01-01"));
parameterFieldController.setCurrentValue("", "To Posted Date", Date.valueOf("2099-12-31"));
  1. 其他确认项
  • 确认报表无嵌套子报表
  • 无日期参数的报表可正常生成,报错与"From Posted Date"和"To Posted Date"两个日期参数强相关

已尝试的日期参数设置方式

  • 使用字符串格式:paramCtrl.setCurrentValue(... "yyyy-MM-dd")
  • 使用字符串格式:paramCtrl.setCurrentValue(... "mm/dd/yyyy")
  • 使用java.util.Date对象传递
  • 使用java.sql.Date对象传递
  • 使用java.sql.Timestamp对象传递
  • 使用ParamFieldDiscreteValue包装上述日期类型传递

求排查解决线索

内容的提问来源于stack exchange,提问作者kailoon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 01:30:01