Ternæroperatøren forårsaker mangler INN eller UT-parameteren ved indeks [Jasper Rapport]

stemmer
0

Jeg har skrevet en enkel spørring i <queryString>koden inne i en 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

denne spørringen kjøres i iReport med en tilkobling til en Oracle database. Jeg har testet spørringen

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

det fungerer godt, men når jeg bruker ternæroperatoren i første spørringen jeg får feil

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

Hva har jeg gjort galt?

Takk. 

Publisert på 09/10/2019 klokken 12:57
kilden bruker
På andre språk...                            


1 svar

stemmer
1

Du kan ikke blande språk i søkestrengen. Men hvis du deklarerer cardTableparameter med følgende standardverdi uttrykk:

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

Så du kan bruke i søkestrengen:

SELECT s.BOARD_NUMBER
  FROM $P!{cardTable}

Legg merke til utropstegn !, som vil tvinge en streng erstatning inkludert bord alias si stedet for verdien rømmer og placeholding.

Svarte 09/10/2019 kl. 14:05
kilden bruker

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