1
我在Jasper爲我製作了一個自定義報告,用於我們使用的程序,並在更新程序時報告遇到錯誤。錯誤是:賈斯珀報告錯誤FirebirdSql錯誤#50710702
ERROR#50710702 iReport的是無法填充(0)
堆棧細節是:預先
com.fbi.util.exception.ExceptionMainFree: net.sf.jasperreports.engine.JRException: Error preparing statement for executing the report query :
SELECT part.num AS PartNum, part.description AS PartDescription, part.id AS partid, onhand.lgid,
COALESCE(sold.qtysold, 0) AS qtySold,
DATEDIFF(day FROM timestamp ? TO timestamp ?) AS datediff,
COALESCE(onhand.avgqoh, 0) AS AvgQOH, COALESCE(locationgroup.name, 'No Inventory') as LocationGroupName,
productfortree.num AS productnum, producttree.name AS tree,
company.name AS company
FROM part
INNER JOIN (SELECT AVG(inventorylog.qtyonhand) AS avgQOH, inventorylog.partid AS PartID, inventorylog.locationgroupid as LGID
FROM inventorylog
WHERE inventorylog.typeID IN (1,10,15,20,30,40,50,60,64,67,68,72)
AND inventorylog.eventdate BETWEEN ? AND ?
GROUP BY inventorylog.partid, inventorylog.locationgroupid) onHand ON part.id = onhand.partid
LEFT JOIN locationgroup ON onhand.lgid = locationgroup.id
LEFT JOIN (SELECT product.partid AS PartID, SUM(soitem.qtyfulfilled) AS QtySold, so.locationgroupid AS LGID
FROM soitem
LEFT JOIN product ON soitem.productid = product.id
LEFT JOIN so ON so.id = soitem.soid
WHERE soitem.typeid = 10
AND soitem.datelastfulfillment BETWEEN ? AND ?
GROUP BY product.partid, so.locationgroupid) AS sold ON part.id = sold.partid AND locationgroup.id = sold.lgid
LEFT JOIN product AS productfortree ON productfortree.partid = part.id
LEFT JOIN producttotree ON producttotree.productid = productfortree.id
LEFT JOIN producttree ON producttree.id = producttotree.producttreeid
JOIN company ON company.id = 1
WHERE part.activeflag = 1
AND part.typeid = 10
AND locationgroup.id IN (7,8,9)
AND part.num LIKE ?
AND ((COALESCE(producttree.id,0) IN (0)) OR ((COALESCE(producttree.id,0) LIKE ?)))
GROUP BY producttree.name, part.description, part.id, onhand.lgid, COALESCE(sold.qtysold, 0),
DATEDIFF(day FROM timestamp ? TO timestamp ?),
COALESCE(onhand.avgqoh, 0), COALESCE(locationgroup.name, 'No Inventory'),
productfortree.num, part.num, company.name
ORDER BY producttree.name, part.num
at com.evnt.eve.modules.logic.extra.LogicReport.getJasperPrint(LogicReport.java:300)
at com.evnt.eve.modules.ReportModule.getJasperPrint(ReportModule.java:168)
at sun.reflect.GeneratedMethodAccessor327.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.evnt.eve.modules.EVEModule.handleEvent(EVEModule.java:189)
at com.evnt.eve.MessageHandler.handleEvent(MessageHandler.java:156)
at com.evnt.eve.MessageHandler.run(MessageHandler.java:115)
at java.lang.Thread.run(Unknown Source)
net.sf.jasperreports.engine.JRException: Error preparing statement for executing the report query :
SELECT part.num AS PartNum, part.description AS PartDescription, part.id AS partid, onhand.lgid,
COALESCE(sold.qtysold, 0) AS qtySold,
DATEDIFF(day FROM timestamp ? TO timestamp ?) AS datediff,
COALESCE(onhand.avgqoh, 0) AS AvgQOH, COALESCE(locationgroup.name, 'No Inventory') as LocationGroupName,
productfortree.num AS productnum, producttree.name AS tree,
company.name AS company
FROM part
INNER JOIN (SELECT AVG(inventorylog.qtyonhand) AS avgQOH, inventorylog.partid AS PartID, inventorylog.locationgroupid as LGID
FROM inventorylog
WHERE inventorylog.typeID IN (1,10,15,20,30,40,50,60,64,67,68,72)
AND inventorylog.eventdate BETWEEN ? AND ?
GROUP BY inventorylog.partid, inventorylog.locationgroupid) onHand ON part.id = onhand.partid
LEFT JOIN locationgroup ON onhand.lgid = locationgroup.id
LEFT JOIN (SELECT product.partid AS PartID, SUM(soitem.qtyfulfilled) AS QtySold, so.locationgroupid AS LGID
FROM soitem
LEFT JOIN product ON soitem.productid = product.id
LEFT JOIN so ON so.id = soitem.soid
WHERE soitem.typeid = 10
AND soitem.datelastfulfillment BETWEEN ? AND ?
GROUP BY product.partid, so.locationgroupid) AS sold ON part.id = sold.partid AND locationgroup.id = sold.lgid
LEFT JOIN product AS productfortree ON productfortree.partid = part.id
LEFT JOIN producttotree ON producttotree.productid = productfortree.id
LEFT JOIN producttree ON producttree.id = producttotree.producttreeid
JOIN company ON company.id = 1
WHERE part.activeflag = 1
AND part.typeid = 10
AND locationgroup.id IN (7,8,9)
AND part.num LIKE ?
AND ((COALESCE(producttree.id,0) IN (0)) OR ((COALESCE(producttree.id,0) LIKE ?)))
GROUP BY producttree.name, part.description, part.id, onhand.lgid, COALESCE(sold.qtysold, 0),
DATEDIFF(day FROM timestamp ? TO timestamp ?),
COALESCE(onhand.avgqoh, 0), COALESCE(locationgroup.name, 'No Inventory'),
productfortree.num, part.num, company.name
ORDER BY producttree.name, part.num
at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createStatement(JRJdbcQueryExecuter.java:377)
at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createDatasource(JRJdbcQueryExecuter.java:196)
at net.sf.jasperreports.engine.fill.JRFillDataset.createQueryDatasource(JRFillDataset.java:1087)
at net.sf.jasperreports.engine.fill.JRFillDataset.initDatasource(JRFillDataset.java:668)
at net.sf.jasperreports.engine.fill.JRBaseFiller.setParameters(JRBaseFiller.java:1258)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:877)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:822)
at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:61)
at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:446)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:849)
at com.evnt.eve.modules.logic.extra.LogicReport.getJasperPrint(LogicReport.java:296)
at com.evnt.eve.modules.ReportModule.getJasperPrint(ReportModule.java:168)
at sun.reflect.GeneratedMethodAccessor327.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.evnt.eve.modules.EVEModule.handleEvent(EVEModule.java:189)
at com.evnt.eve.MessageHandler.handleEvent(MessageHandler.java:156)
at com.evnt.eve.MessageHandler.run(MessageHandler.java:115)
at java.lang.Thread.run(Unknown Source)
org.firebirdsql.jdbc.FBSQLException: GDS Exception. 335544569. Dynamic SQL Error
SQL error code = -104
Token unknown - line 3, column 29
?
at org.firebirdsql.jdbc.AbstractPreparedStatement.<init>(AbstractPreparedStatement.java:138)
at org.firebirdsql.jdbc.FBPreparedStatement.<init>(FBPreparedStatement.java:45)
at sun.reflect.GeneratedConstructorAccessor57.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.firebirdsql.jdbc.FBStatementFactory.createPreparedStatement(FBStatementFactory.java:89)
at org.firebirdsql.jdbc.AbstractConnection.prepareStatement(AbstractConnection.java:1187)
at org.firebirdsql.jdbc.AbstractConnection.prepareStatement(AbstractConnection.java:942)
at org.firebirdsql.jdbc.AbstractConnection.prepareStatement(AbstractConnection.java:896)
at org.firebirdsql.jdbc.AbstractConnection.prepareStatement(AbstractConnection.java:324)
at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createStatement(JRJdbcQueryExecuter.java:267)
at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createDatasource(JRJdbcQueryExecuter.java:196)
at net.sf.jasperreports.engine.fill.JRFillDataset.createQueryDatasource(JRFillDataset.java:1087)
at net.sf.jasperreports.engine.fill.JRFillDataset.initDatasource(JRFillDataset.java:668)
at net.sf.jasperreports.engine.fill.JRBaseFiller.setParameters(JRBaseFiller.java:1258)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:877)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:822)
at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:61)
at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:446)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:849)
at com.evnt.eve.modules.logic.extra.LogicReport.getJasperPrint(LogicReport.java:296)
at com.evnt.eve.modules.ReportModule.getJasperPrint(ReportModule.java:168)
at sun.reflect.GeneratedMethodAccessor327.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.evnt.eve.modules.EVEModule.handleEvent(EVEModule.java:189)
at com.evnt.eve.MessageHandler.handleEvent(MessageHandler.java:156)
at com.evnt.eve.MessageHandler.run(MessageHandler.java:115)
at java.lang.Thread.run(Unknown Source)
org.firebirdsql.gds.GDSException: Dynamic SQL Error
SQL error code = -104
Token unknown - line 3, column 29
?
at org.firebirdsql.gds.impl.wire.AbstractJavaGDSImpl.readStatusVector(AbstractJavaGDSImpl.java:2092)
at org.firebirdsql.gds.impl.wire.AbstractJavaGDSImpl.receiveResponse(AbstractJavaGDSImpl.java:2042)
at org.firebirdsql.gds.impl.wire.AbstractJavaGDSImpl.iscDsqlPrepare(AbstractJavaGDSImpl.java:1465)
at org.firebirdsql.gds.impl.GDSHelper.prepareStatement(GDSHelper.java:190)
at org.firebirdsql.jdbc.AbstractStatement.prepareFixedStatement(AbstractStatement.java:1441)
at org.firebirdsql.jdbc.AbstractPreparedStatement.prepareFixedStatement(AbstractPreparedStatement.java:1285)
at org.firebirdsql.jdbc.AbstractPreparedStatement.<init>(AbstractPreparedStatement.java:135)
at org.firebirdsql.jdbc.FBPreparedStatement.<init>(FBPreparedStatement.java:45)
at sun.reflect.GeneratedConstructorAccessor57.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.firebirdsql.jdbc.FBStatementFactory.createPreparedStatement(FBStatementFactory.java:89)
at org.firebirdsql.jdbc.AbstractConnection.prepareStatement(AbstractConnection.java:1187)
at org.firebirdsql.jdbc.AbstractConnection.prepareStatement(AbstractConnection.java:942)
at org.firebirdsql.jdbc.AbstractConnection.prepareStatement(AbstractConnection.java:896)
at org.firebirdsql.jdbc.AbstractConnection.prepareStatement(AbstractConnection.java:324)
at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createStatement(JRJdbcQueryExecuter.java:267)
at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createDatasource(JRJdbcQueryExecuter.java:196)
at net.sf.jasperreports.engine.fill.JRFillDataset.createQueryDatasource(JRFillDataset.java:1087)
at net.sf.jasperreports.engine.fill.JRFillDataset.initDatasource(JRFillDataset.java:668)
at net.sf.jasperreports.engine.fill.JRBaseFiller.setParameters(JRBaseFiller.java:1258)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:877)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:822)
at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:61)
at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:446)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:849)
at com.evnt.eve.modules.logic.extra.LogicReport.getJasperPrint(LogicReport.java:296)
at com.evnt.eve.modules.ReportModule.getJasperPrint(ReportModule.java:168)
at sun.reflect.GeneratedMethodAccessor327.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.evnt.eve.modules.EVEModule.handleEvent(EVEModule.java:189)
at com.evnt.eve.MessageHandler.handleEvent(MessageHandler.java:156)
at com.evnt.eve.MessageHandler.run(MessageHandler.java:115)
at java.lang.Thread.run(Unknown Source)
謝謝!
感謝您的快速反應。我改變了代碼,仍然有錯誤。 – JCWonder
下面是源代碼的樣子:CODE:DATEDIFF(CAST日期($ P {dateRange1}作爲TIMESTAMP)到CAST($ P {dateRange2} AS TIMESTAMP))AS datediff, – JCWonder
@JCWonder您是否嘗試過使用double cast我建議? –