2015-02-25 2 views
0

Я использую iReport для разработки моего отчета.Ошибка при выполнении выражения sql при использовании выражения java в ireport

У меня есть 2 параметра, которые являются 1-м параметром (companyName), встроенным в 2-й параметр (pCompanyName). Я также фильтрую параметр, используя 2 варианта. Если параметр имеет значение null, он будет распечатывать «» или пустым, иначе он распечатает запрос. См. Раздел параметров ниже. При использовании groovy языка он распечатает отчет.

Проблема заключается в том, что после изменения языка от groovy до выражения java отчет распечатывает ошибку. Ниже приведена ошибка. Кто-то здесь, пожалуйста, помогите .. Отчаянный. Заполнение печать

Ошибки ... Ошибка выполнения SQL заявления для: laporan_quota net.sf.jasperreports.engine.JRException: Ошибка выполнения SQL заявления для: laporan_quota в net.sf.jasperreports.engine.query.JRJdbcQueryExecuter .createDatasource (JRJdbcQueryExecuter.java:240) на net.sf.jasperreports.engine.fill.JRFillDataset.createQueryDatasource (JRFillDataset.java:1114) в net.sf.jasperreports.engine.fill.JRFillDataset.initDatasource (JRFillDataset.java : 691) at net.sf.jasperreports.engine.fill.JRBaseFiller.setParameters (JRBaseFiller.java:1314) at net.sf.jasperreports.eng ine.fill.JRBaseFiller.fill (JRBaseFiller.java:931) at net.sf.jasperreports.engine.fill.JRBaseFiller.fill (JRBaseFiller.java:873) at net.sf.jasperreports.engine.fill.JRFiller. заполнения (JRFiller.java:87) в net.sf.jasperreports.engine.JasperFillManager.fill (JasperFillManager.java:287) на net.sf.jasperreports.engine.JasperFillManager.fillReport (JasperFillManager.java:760) на com.jaspersoft.ireport.designer.compiler.IReportCompiler.run (IReportCompiler.java:891) на org.openide.util.RequestProcessor $ Task.run (RequestProcessor.java:572) на org.openide.util.RequestProcessor $ Processor.run (RequestProcessor.java:997) Вызвано: java.sql.SQLSyntaxErrorException: ORA-00933: команда SQL n ot правильно закончил по адресу oracle.jdbc.driver.T4CTTIoer.processError (T4CTTIoer.java:450) в oracle.jdbc.driver.T4CTTIoer.processError (T4CTTIoer.java:399) в oracle.jdbc.driver.T4C8Oall.processError (T4C8Oall .java: 1059) в oracle.jdbc.driver.T4CTTIfun.receive (T4CTTIfun.java:522) в oracle.jdbc.driver.T4CTTIfun.doRPC (T4CTTIfun.java:257) в oracle.jdbc.driver.T4C8Oall.doOALL (T4C8Oall.java:587) при oracle.jdbc.driver.T4CPreparedStatement.doOall8 (T4CPreparedStatement.java:225) на oracle.jdbc.driver.T4CPreparedStatement.doOall8 (T4CPreparedStatement.java:53) в oracle.jdbc.driver.T4CPreparedStatement .executeForDescribe (T4CPreparedStatement.java:774) на oracle.jdbc.driver.OracleStatement.executeMaybeDescribe (OracleStatement.java:925) на oracle.j dbc.driver.OracleStatement.doExecuteWithTimeout (OracleStatement.java:1111) на oracle.jdbc.driver.OraclePreparedStatement.executeInternal (OraclePreparedStatement.java:4798) в oracle.jdbc.driver.OraclePreparedStatement.executeQuery (OraclePreparedStatement.java:4845) at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery (OraclePreparedStatementWrapper.java:1501) at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createDatasource (JRJdbcQueryExecuter.Java: 233)

Sql

SELECT DISTINCT 
b.company_name company_name, 
a.app_id permit_id, 
b.quota_year, 
b.app_id app_id, 
g.descr ap_category, 
h.descr ap_subcategory, 
a.tariff_code hs_code, 
h.descr model, 
a.product_desc goods_description, 
a.quantity quantity, 
a.price_tot total_cost, 
a.permit_no permit_no, 
a.license_id license_no, 
a.approved_date approve_date, 
a.origin_country origin_country, 
a.cnor_addr3 consignor_country, 
a.branch_id miti_branch, 
c.descr permit_status, 
a.port_discharge port_name, 
a.effect_date effective_date, 
a.expiry_date expiry_date 
FROM PERMIT_APP a, MT_PERMIT_APP_MASTER b, MT_REF_PERMIT_STATUS c, MT_QUOTA d, MT_QUOTA_APP e, MT_AP_TYPE f, MT_AP_CATEGORY g, 
MT_AP_SUBCATEGORY h, MT_AP_TYPE_OPTION i 
WHERE 
a.master_app_id = b.app_id 
AND b.quota_id = d.quota_id 
AND d.quota_id = e.quota_id 
AND f.ap_type_code = g.ap_type_code 
AND g.ap_category_code = h.ap_category_code 
AND h.ap_subcategory_code = b.ap_subcategory_code 
AND f.ap_type_code = i.ap_type_code 
AND a.status_code = c.status_code 
AND c.status_code in ('102','301') 
AND i.option_type = 'QUOTA' 
$P!{pCompanyName} 

Параметры

1) $ Р {CompanyName}

2) $ Р {pCompanyName}

($P{companyName}.isEmpty() ? "" : " AND b.company_name = 'JA' ") 
!
+0

Это' $ P! {PCompanyName} 'p искусство запроса? – Sathya

+0

Да, сэр. Если он не равен null, он распечатает запрос. Если значение null не будет отображаться или пустое значение – digit

+0

Возможно, вам придется разместить это в другом месте, потому что это не является частью допустимого SQL-запроса, и это то, что сообщение об ошибке говорит «ORA-00933: команда SQL не правильно завершена» – Sathya

ответ

0

Да, наконец, я получил решение, соответствующее моему вопросу выше.

Это потому, что я не ставлю кронштейн внутри, если еще код, поэтому ошибка говорит SQL ошибка утверждение, но я думаю, что это не SQL ошибка утверждение, это ошибка синтаксиса:

Решение

Изменить: ($ P {companyName} .isEmpty()? "": "AND b.company_name = 'JA'")

К этому: (($ P {companyName} .isEmpty())? " ":" AND b.company_name = 'JA' ")

Смежные вопросы