Olá, sou novo aqui, desculpem se estou no lugar errado.
Tenho uma dúvida que não consegui encontrar solução ainda.
Estou com uma demanda de um cliente solicitando que ao gerar o iReport, este receba a ordenação da tela da aplicação, ou seja, se o usuário ordenar por data o iReport deve ordenar por data, se o usuário ordenar por nome o iReport deve ordenar por nome e assim sucessivamente.
A minha dúvida é, como fazer isso no jasper? As únicas opções que eu achei não são dessa forma, são com input do usuário ao gerar o report como parâmetro.
Porém eu quero que respeite a ordenação da tela da aplicação, não quero fazer fixo no SQL a ordenação, conforme eu falei acima, se o usuário ordenar na tela por data, o relatório tem que ordenar por data, se ordenar por nome, o relatório tem que ordenar por nome e assim sucessivamente.
rodriguesabner
Então, a cada botão você vai ter que chamar uma query diferente
H
helldjinn
Por exemplo:
select * from tabela order by recebe_ordenacao
onde recebe_ordenacao é um parâmetro dinâmico que deve ser recebido da aplicação.
rodriguesabner
é o que eu to falando kkkkkkkk, vc nem precisa criar varios metodos, cria uma vez só e faz isso:
Desculpe, sou novo com tudo isso, vou tentar fazer.
rodriguesabner
Mostra o código que vc chama o relatório
rcarvalhoalencar
Criar um report específico para cada, seria viável?
Tipo um report para nome, chamar esse report passando o nome.
Eu tinha feito isso um a tempo.
H
helldjinn
Sem qualquer possibilidade de fazer isso, infelizmente
rodriguesabner
Nossa, é muito trabalho, só passar o SQL já está de ótimo tamanho
H
helldjinn
Hoje o relatório é somente um sql que recebe IDs. Você quer o Source?
rodriguesabner
De onde vc chama esse relatorio?
H
helldjinn
O relatório fica dentro da aplicação, ao clicar em gerar relatório você seleciona o relatório, esse relatório recebe os ids que estão na tela para gerar o relatório, basicamente eu quero fazer a mesma coisa, só que para o order by
where
$X{IN, t.id, ids}
esse é o where do relatório, quero fazer algo parecido com o order by.
rodriguesabner
ok, mostra o código da aplicação, é o codigo q vc usa pra gerar o relatorio
H
helldjinn
Infelizmente eu não tenho acesso a aplicação, eu somente crio os relatórios dentro da empresa hehe…
rodriguesabner
Aí complica né… pensei em um if, mas não resolveria muito não…
Dei uma pesquisada bem rapida aqui, achei isso:
Jasper supports $P!{PARAM} to hold the SQL inside a parameter and pass it to the report datasource.
If I’m understanding your question correctly, jasper does not support dynamic SQL queries. (it cannot detect the field changes at runtime and modify the jrxml by itself)
For example : you can pass “select column1, column2 from table where condition = 1” as a parameter, but the same fields should be evaluated inside the jrxml beforehand.
lets say if you pass “select column3, column4 from table where condition = 1” as a parameter into the above mentioned report, it would fail because the evaluated fields column1 and column2 could not be found at runtime.