Problemas com o jasperreports

0 respostas
S

Boa Tarde, Pessoal estou com um problema para carregar as informações no jasperreports.

Trabalho com o netbeans 5.5, firebird e jasperreports 1.3.1. Estou desenvolvendo uma aplicação para internet e agora preciso fazer os relatórios.

Peguei um artigo no site da netbeans.org sobre como gerar relatórios em pdf a partir de uma aplicação web.
O problema é que ele no final de tudo o meu relatório não mostra os dados. Somente o cabeçalho e o título.

Vou falar o que eu fiz.

1 - Criei um select na minha classe. Este é o select:
SELECT CAST(TAR.ID_TAREFA AS VARCHAR(8)) AS CODIGO FROM TAREFA TAR INNER JOIN FORMULARIO FOM ON TAR.ID_FORMULARIO = FOM.ID_FORMULARIO WHERE TAR.ID_TAREFA = 1
e pedi para ele colocar o resultado em um objeto CachedRowSetXImpl.

2 - Depois criei o meu arquivo jrxml com os design do meu relatório.

3- Conforme a apostila explicou no meu applicationbeans1 eu coloquei o código para chamar o relatório. Veja abaixo o código fonte:
public void jasperReport(String name, String type,
ResultSet data, Map params) {

// Validar que reconhecemos o tipo de relatório
// antes de perder tempo potencialmente preenchendo
// o relatório com dados
boolean found = false;
for (int i = 0; i < VALID_TYPES.length; i++) {
    if (VALID_TYPES[i].equals(type)) {
        found = true;
        break;
    }
}
if (!found) {
    throw new IllegalArgumentException("Invalid report type '"
            + type
            + "' requested");
}

// Procurar recurso de design de relatório compilado
ExternalContext econtext = getExternalContext();
InputStream stream = econtext.getResourceAsStream(PREFIX + name
            + SUFFIX);
if (stream == null) {
    throw new IllegalArgumentException("Unknown report name '"
            + name
            + "' requested");
}

try {
   data.beforeFirst();
} catch (Exception e) {
    throw new FacesException(e);
}

// Preencha o relatório solicitado com os dados especificados
JRResultSetDataSource ds = new JRResultSetDataSource(data);
JasperPrint jasperPrint = null;
try {
    jasperPrint = JasperFillManager.fillReport(
        stream, params, ds);
} catch (RuntimeException e) {
    throw e;
} catch (Exception e) {
    throw new FacesException(e);
} finally {
    try {
        stream.close();
    } catch (IOException e) {
        ;
    }
}

// Configurar o exportador a ser usado, junto com os parâmetros
// personalizados específicos do tipo de exportador
JRExporter exporter = null;
HttpServletResponse response = (HttpServletResponse)
econtext.getResponse();
FacesContext fcontext = FacesContext.getCurrentInstance();
try {
    response.setContentType(type);
    if ("application/pdf".equals(type)) {
      exporter = new JRPdfExporter();
      exporter.setParameter(JRExporterParameter.JASPER_PRINT,
        jasperPrint);
      exporter.setParameter(JRExporterParameter.OUTPUT_STREAM,
        response.getOutputStream());
    } else if ("text/html".equals(type)) {
      exporter = new JRHtmlExporter();
      exporter.setParameter(JRExporterParameter.JASPER_PRINT,
        jasperPrint);
      exporter.setParameter(JRExporterParameter.OUTPUT_WRITER,
        response.getWriter());
      // Tornar imagens disponíveis para a saída HTML
      HttpServletRequest request =
        (HttpServletRequest)
        fcontext.getExternalContext().getRequest();
      request.getSession().setAttribute(
        ImageServlet.DEFAULT_JASPER_PRINT_SESSION_ATTRIBUTE,
        jasperPrint);
      exporter.setParameter(
        JRHtmlExporterParameter.IMAGES_MAP, new HashMap());
      // A seguinte instrução requer mapeamento / imagem
      // para o imageServlet no web.xml.
      //
      // Este servlet serve imagens, incluindo imagens px
      // para espaçamento.
      //
      // Sirva as imagens diretamente para não
      // incorrermos em tempo extra associado a
      // a uma solicitação JSF para uma entidade não-JSF.
      exporter.setParameter(JRHtmlExporterParameter.IMAGES_URI,
        request.getContextPath() + "/image?image=");
    }
} catch (RuntimeException e) {
    throw e;
} catch (Exception e) {
    throw new FacesException(e);
}

// Basta de preliminares ...
// exportar o relatório
try {
    exporter.exportReport();
} catch (RuntimeException e) {
    throw e;
} catch (Exception e) {
    throw new FacesException(e);
}

// Dizer a JavaServer Faces que nenhuma saída é necessária
fcontext.responseComplete();

}

4 - Criei um botão na minha pagina, coloquei o código para chamar a função jasperReport conforme a apostila e mandei rodar. O relatório em pdf abrir sem as informações do banco só as informações estáticas.

Não sei o que aconteceu parece que ele não está carregando os dados. já confirmei, o meu objeto CachedRowSetXImpl tem os dados do banco.

Será que alguém sabe o que pode estar acontecendo?

Se alguém puder me ajudar eu agradeço.

Obrigada pela atenção.

Sheila

Criado 20 de fevereiro de 2008
Respostas 0
Participantes 1