(RESOLVIDO) - Erro no iReport - Error executing SQL statement for

Boa tarde pessoal se alguém puder me ajudar, agradeceria muito !!

Tenho um relatório onde passo quatro parâmetros mas o mesmo me retorna erro tanto na aplicação como diretamente no relatório…

Métodos da Aplicação:

    public void report(Veiculo v, Parceiro p, Parceiro m, String di, String df) {
    //JRDataSource jrds = new JRResultSetDataSource(dao.listAllReport());
    HashMap map = new HashMap();

    String veiculo;
    String parceiro;
    String motorista;
    String periodo;

    if (!v.getPlaca().equals("")) {
        veiculo = " WHERE NPLA_VEI = ' " + v.getPlaca() + "' ";
    } else {
        veiculo = " WHERE NPLA_VEI LIKE '%%' ";
    }

    if (p.getIdParceiro() != 0) {
        parceiro = " AND CODI_TRA = " + p.getIdParceiro() + " ";
    } else {
        parceiro = " AND CODI_TRA LIKE '%%' ";
    }

    if (m.getIdParceiro() != 0) {
        motorista = " AND CMOT_TRA = " + m.getIdParceiro() + " ";
    } else {
        motorista = " AND CMOT_TRA LIKE '%%' ";
    }

    if ((!di.equals("  /  /    ")) && (!df.equals("  /  /    "))) {
        periodo = " AND DATA_ABASTECIMENTO BETWEEN '" + di + "' AND '" + df + "' ";
    } else {
        periodo = " AND DATA_ABASTECIMENTO LIKE '%%' ";
    }   
    
    String testeExecute = "SELECT * FROM VW_ABASTECIMENTO_COMB_REL" + veiculo + parceiro + motorista + periodo;

    map.put("veiculo_str", veiculo);
    map.put("posto_comb_str", parceiro);
    map.put("motorista_str", motorista);
    map.put("datas_str", periodo);

    //gerarRelatorioDesktop(arquivo, map, jrds);
    gerarRelatorioDesktop(arquivo, map);

}

//private void gerarRelatorioDesktop(String arquivo, Map<String, Object> parametros, JRDataSource jrds) {
private void gerarRelatorioDesktop(String arquivo, Map<String, Object> parametros) {
    try {
        JasperPrint jasperPrint = JasperFillManager.fillReport(arquivo, parametros, ConnectionFactoryOracle.getConnection());
        JasperViewer.viewReport(jasperPrint, false);
    } catch (Exception e) {
        e.printStackTrace();
    }
}

Query do relatorio:

SELECT * FROM VW_ABASTECIMENTO_COMB_REL $P{veiculo_str} $P{posto_comb_str} $P{motorista_str} $P{datas_str}

**Erros no console java:**0

net.sf.jasperreports.engine.JRException: Error executing SQL statement for : Relatorio Abastecimento
at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createDatasource(JRJdbcQueryExecuter.java:240)
at net.sf.jasperreports.engine.fill.JRFillDataset.createQueryDatasource(JRFillDataset.java:1086)
at net.sf.jasperreports.engine.fill.JRFillDataset.initDatasource(JRFillDataset.java:667)
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.fill(JasperFillManager.java:276)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:745)
at Controller.AbastecimentoCombustivelController.gerarRelatorioDesktop(AbastecimentoCombustivelController.java:151)
at Controller.AbastecimentoCombustivelController.report(AbastecimentoCombustivelController.java:145)
at Frota.Relatorios.RelatorioAbastecimentoCombustivelView.preparaRelatorio(RelatorioAbastecimentoCombustivelView.java:775)
at Frota.Relatorios.RelatorioAbastecimentoCombustivelView.jButtonImprimirKeyPressed(RelatorioAbastecimentoCombustivelView.java:519)
at Frota.Relatorios.RelatorioAbastecimentoCombustivelView.access$400(RelatorioAbastecimentoCombustivelView.java:29)
at Frota.Relatorios.RelatorioAbastecimentoCombustivelView$5.keyPressed(RelatorioAbastecimentoCombustivelView.java:209)
at java.awt.Component.processKeyEvent(Component.java:6493)
at javax.swing.JComponent.processKeyEvent(JComponent.java:2832)
at java.awt.Component.processEvent(Component.java:6312)
at java.awt.Container.processEvent(Container.java:2236)
at java.awt.Component.dispatchEventImpl(Component.java:4891)
at java.awt.Container.dispatchEventImpl(Container.java:2294)
at java.awt.Component.dispatchEvent(Component.java:4713)
at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1954)
at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:806)
at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1074)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:945)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:771)
at java.awt.Component.dispatchEventImpl(Component.java:4762)
at java.awt.Container.dispatchEventImpl(Container.java:2294)
at java.awt.Window.dispatchEventImpl(Window.java:2750)
at java.awt.Component.dispatchEvent(Component.java:4713)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Caused by: java.sql.SQLSyntaxErrorException: ORA-00933: comando SQL não encerrado adequadamente

at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:445)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:396)
at oracle.jdbc.driver.T4C8Oall.processError(T4C8Oall.java:879)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:450)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:192)
at oracle.jdbc.driver.T4C8Oall.doOALL(T4C8Oall.java:531)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:207)
at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:884)
at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1167)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1289)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3584)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3628)
at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1493)
at net.sf.jasperreports.engine.query.JRJdbcQueryExecuter.createDatasource(JRJdbcQueryExecuter.java:233)
... 49 more

O erro está informando que a Query não foi encerrada de forma correta.

Adicione o (+) para concatenar os parâmetros do relatório e verifique se resolve o problema.

Exemplo:
SELECT * FROM VW_ABASTECIMENTO_COMB_REL $P{veiculo_str} + $P{posto_comb_str} + $P{motorista_str} + $P{datas_str}

Também infelizmente não funcionou…

Dentro do relatório coloquei desta forma e funcionou dentro do Preview.

SELECT * FROM VW_ABASTECIMENTO_ARLA_REL WHERE CODI_PES LIKE $P{motorista_str} AND DESC_VEICULO LIKE $P{veiculo_str} AND CODI_TRA LIKE $P{forn_str} AND DATA_ABASTECIMENTO BETWEEN $P{data_i} AND $P{data_f}

Mas na aplicação não aparece os dados, fica desta forma:

Altere o Map para tipo String, já que você está passando String como valor .

Map<String, String>

private void gerarRelatorioDesktop(String arquivo, Map<String, Object> parametros)

E no relatório verifica se o parâmetro é do tipo String;

Pessoal obrigado pela ajuda, o problema era incompatibilidade de versões do iReport, estava editando um arquivo na versão 5.6, e o mesmo foi confeccionado na versão 5.5.1. Voltei a versão anterior (5.5.1) e resolveu o problema. Agradeço principalmente pela ajuda de (echos) pela disponibilidade na tentativa de me ajudar…