Então, existem várias maneiras de fazer isso. A mais correta e menos gambiarra seria você inserir parâmetros em sua query para que dentro do programa você possa pedir ao usuário o valor dessas variáveis, como por exemplo data inicial, data final, nome, sobrenome, e outras coisas. Por exemplo:
SELECT
nm_cidade,
cd_cidade
FROM
cidade
WHERE
nm_cidade LIKE ($P!{pCIDADE})
ORDER BY
$P!{pORDEM}
Veja que pCIDADE e pORDEM são parâmetros do tipo String que você poderá definir na hora de gerar o relatório. Assim se o cliente quisesse um relatório das cidades que contenham a letra F ordenadas pelo código era só definir os parâmetros pCIDADE e pORDEM como “F” e “cd_cidade” respectivamente. Na hora de gerar o relatório, o jasper vai substituir as chamadas dos parâmetros pelos valores que foram passados pra eles.
Uma segunda forma seria você definir sua query como um único parâmetro, por exemplo:
$P!{QUERY_DO_RELATORIO}
Assim você envia a query inteira dentro desse parâmetro, mas isso é GAMBIARRA!!!