当我在 JasperSoft Studio 上测试报告时,它工作正常。
但是当我导出报告并在我的主项目上测试它时,我收到此错误:
计算源文本表达式时出错: IF($F{jdpmarc}.equals(""),new java.math.BigDecimal(0),$F{jdpprit})
我尝试过这些事情:
更改此表达式,因为它是 BigDecimal 运算
IF($F{jdpmarc}.equals(""), 0,$F{jdpprit})
为此
IF($F{jdpmarc}.equals(""),new java.math.BigDecimal(0),$F{jdpprit})
这是我的代码:
Connection conn = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/db","user", "password");
HashMap<String, Object> data = new HashMap<String, Object>();
data.put("Proforma", 67929);
String reportPath = "ReporteIva.jasper";
JasperPrint report = JasperFillManager.fillReport(reportPath, data, conn);
JasperViewer viewer = new JasperViewer(report);
viewer.setVisible(true);
尝试使用三元运算符,
$F{jdpmarc}.equals("") ? new java.math.BigDecimal(0) : $F{jdpprit}
按照@dada67的建议,对我来说添加jasperreports-functions-xxx.jar就足够了(在我的例子中,我使用的是6.6.0版本)