Ternaire operator waardoor Ontbrekende in of uit parameter index [Jasper rapport]

stemmen
0

Ik heb een eenvoudige query in de schriftelijke <queryString>tag in een Jasper rapport

select s.BOARD_NUMBER, s.LOCATION_NAME, s.SHELF_NO, s.REGION_NAME, s.SERIAL_NUMBER, s.CARD_DISPLAYTYPE, s.CITY_NAME, s.PLUGGED_DATE, s.ROUTER_NAME
                $P{searchMainCardType} == CPM ? from TM_PROCESSOR_CARD_INFO_VIEW s : from TM_DAUGHTER_CARD_INFO_VIEW

deze query wordt uitgevoerd in iReport met een verbinding met een Oracle database. Ik heb de query getest

select s.BOARD_NUMBER, s.LOCATION_NAME, s.SHELF_NO, s.REGION_NAME, s.SERIAL_NUMBER, s.CARD_DISPLAYTYPE, s.CITY_NAME, s.PLUGGED_DATE, s.ROUTER_NAME
                from TM_PROCESSOR_CARD_INFO_VIEW s

het werkt goed, maar toen ik de ternaire operator gebruiken in de eerste vraag krijg ik de fout

Error filling print... Error executing SQL statement for : unpluggedSwitchesHaes 
net.sf.jasperreports.engine.JRException: Error executing SQL statement for : unpluggedSwitchesHaes      at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createDatasource(JRJdbcQueryExecuter.java:240)      at net.sf.jasperreports.engine.fill.JRFillDataset.createQueryDatasource(JRFillDataset.java:1114)      at 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.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:931)      at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:873)      at net.sf.jasperreports.engine.fill.JRFiller.fill(JRFiller.java:87)      at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:287)      at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:760)      at com.jaspersoft.ireport.designer.compiler.IReportCompiler.run(IReportCompiler.java:891)      at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:572)      at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:997)  Caused by: java.sql.SQLException: Missing IN or OUT parameter at index:: 2      at oracle.jdbc.driver.OraclePreparedStatement.processCompletedBindRow(OraclePreparedStatement.java:2076)      at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:4790)      at 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)      ... 11 more

wat heb ik verkeerd gedaan ?

bedankt. 

De vraag is gesteld op 09/10/2019 om 12:57
bron van user
In andere talen...                            


1 antwoorden

stemmen
1

Je kunt niet talen mengen in query string. Maar als je verklaren cardTableparameter met de volgende standaard waarde uitdrukking:

( “CPM”.equals($P{searchMainCardType}) 
? “TM_PROCESSOR_CARD_INFO_VIEW”
: “TM_DAUGHTER_CARD_INFO_VIEW”
) + “ a”

Dus je kunt gebruiken in query string:

SELECT s.BOARD_NUMBER
  FROM $P!{cardTable}

Let op het uitroepteken !, dat een string vervanging inclusief tabelalias zal dwingen sin plaats van waarde te ontsnappen en om plaatsvervangende.

antwoordde op 09/10/2019 om 14:05
bron van user

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more