JasperViewer nao abrir quando ResultSet nao tiver registros
3 respostas
E
edilmar
Ola,
Estou usando o JasperReports 1.2.0 + Swing/JDK5.
Gostaria de saber se tem algum jeito de falar para o JasperViewer nao abrir quando o ResultSet passado pra ele for vazio.
Um plano B seria eu fazer um ResultSet bidirecional e checar:
O ResultSet vc já está gerando ele de qualquer jeito para passar para o Jasper, não? Então na verdade vc não precisa se preocupar com o custo de fazer um IF para verificar se este está vazio ou não; mesmo que seja possível deixar isso para o Jasper, este vai ser mais lento! Concorda?
ASOBrasil
E
edilmar
Nao entendi bem sua msg.
Eu gero antes o ResultSet do jeito normal, ou seja:
mas se eu faco o rs.next(), o Jasper vai comecar no 2o. registro. Pra fazer o if, eu teria que declarar o Statement como bidirecional, para fazer um rs.beforeFirst() antes de chamar o Jasper, entendeu?
celiomarcos
Para verificar o jasperprint antes de enviar pro viewer eu uso o .getPages().isEmpty():
net.sf.jasperreports.engine.JasperPrint jprint = servicos.relatorio(nome, param, company);
if (jprint == null) {
JOptionPane.showMessageDialog(this, "Falha ao criar o relatório", "Erro Relatorio", JOptionPane.ERROR_MESSAGE);
return;
}
// verifica se tem alguma página
if (jprint.getPages().isEmpty()) {
JOptionPane.showMessageDialog(this, "Não há conteúdo no relatório. A visualização foi cancelada", "Relatório vazio", JOptionPane.INFORMATION_MESSAGE);
return;
}