Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Filter by Collection or Array #45

Open
gutembergz opened this issue Oct 6, 2020 · 4 comments
Open

Filter by Collection or Array #45

gutembergz opened this issue Oct 6, 2020 · 4 comments

Comments

@gutembergz
Copy link

Olá, Rogério. Gostaria de saber se o JasperPHP oferece suporte a filtros sql que utilizam parâmetros Java Collection no JasperReports. Consultas como a seguinte:

SELECT * FROM bd_banco.contratos WHERE $X{IN, idCampanha, FILTRO_ID} AND $X{IN, idStatus, FILTRO_STATUS}

Desde já, agradeço a atenção.

@Rctnet
Copy link
Member

Rctnet commented Oct 7, 2020

Olá, @gutembergz , eu nunca usei esse formato, então acho que não é suportado, mas se me mostrar qual a SQL resultante dessa sintaxe, podemos pensar em alguma coisa

@gutembergz
Copy link
Author

Olá, @Rctnet - estou tentando fazer um filtro simples dentro do arquivo jrxml para obter vários IDs através do comando IN do mysql, como abaixo. Porém, o comando IN não aceita strings vazias, para o caso de não haver seleção de filtro.

Já utilizando no formato $X{IN, idStatus, FILTRO_STATUS}, como orientado no JasperReports, o IN nulo funciona, mas é preciso passar os dados do php para o report como Java Array ou Collection.

Como poderíamos informar um IN vazio dentro da query do report? Agradeço a atenção!

SELECT * FROM bd_banco.contratos.idCampanha WHERE IN bd_banco.contratos IN($P!{FILTRO_ID}) AND bd_banco.contratos.idStatus IN($P!{FILTRO_IDSTATUS})

@Rctnet
Copy link
Member

Rctnet commented Oct 7, 2020

é meio gambi, mas se eu entendi bem o que vc quer, eu já fiz assim, colocando o bd_banco.contratos IN(inplode($array)}) dentro do parametro, e testando antes de instanciar o relatório e decidindo se manda o filtro com ou sem in
ficaria mais ou menos assim

    if(!is_array($param['proprietarios_codigo']))
    {
        $param['rd_filtrar_prop_imov'] .= "p.proprietarios_codigo = ".$param['proprietarios_codigo'];    
    }
   else 
    {
        $param['rd_filtrar_prop_imov'] .= "p.proprietarios_codigo in (".implode($param['proprietarios_codigo'],",").")";    
    }
    
    $jpReport = new TJasper("relatorio.jrxml",$param);

@Rctnet
Copy link
Member

Rctnet commented Oct 14, 2020

Ola @gutembergz , conseguiu o que queria, a biblioteca tb suporta array como parâmetro, e já faz o implode com aspas de forma automática, porem não sei como seria a execução da query com um elemento string vazio.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants