JasperPHP
JasperPHP copied to clipboard
Filter by Collection or Array
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.
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
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})
é 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);
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.