Parametros no jasperreport

Oi Gente… eu to tentando passar os parametros da minha classe para o relatório… mas eu to com duvidas…

abaixo esta o código da classe, que peguei aqui no guj através de um tutorial muito bom… acredito que todos ja devem ter visto…

[code]package contasconsumo_c;

/*

  • RelatorioBibliotecaPessoal.java
  • Criado em 28 de Fevereiro de 2005, 09:42
    */

/* pacotes necessários */

import dori.jasper.engine.;
import dori.jasper.view.JasperViewer;
import java.sql.
;
import java.util.;
import javax.swing.
;

import java.util.HashMap;
import java.io.*;

import javax.servlet.;
import javax.servlet.http.
;

/**
*

  • @author Um montao de gente
    */

public class RelatorioBibliotecaPessoal {

/* Realiza conexão com o banco de dados, retornando o objeto connection */
private static Connection getConnection( ) throws
ClassNotFoundException, SQLException
{
    String driver = "oracle.jdbc.driver.OracleDriver";
    String url = "jdbc:oracle:thin:@localhost:1521:back";
    String user = "teste";
    String password = "testeback";

    Class.forName(driver);
    Connection con = DriverManager.getConnection( url, user, password );
    return con;
}

/* Gera Relatorio e visualiza-o */
public void geraRelatorio( ) throws JRException, Exception
{
    Connection con = getConnection( );
    Statement stm = con.createStatement( );
    String query = "select * from teste.vgeral where cdprestador = 4 and cdsecretaria = 700 and substr(nrmesanoref,4,4) = '2004'";
    ResultSet rs = stm.executeQuery(query);

    /* implementação da interface JRDataSource para DataSource ResultSet */
    JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);

    /* HashMap de parametros utilizados no relatório. Sempre instanciados */
    Map parameters = new HashMap();
    // parameters.put("COLUNA", valor);
    //parameters.put("cdPrestador", new Integer(1));
    //parameters.put("cdSecretaria", new Integer(1));
    //parameters.put("nmSecretaria", new String("aa"));
    //parameters.put("substr(nrmesanoref,1,2)", new String("aa"));
    //parameters.put("substr(nrmesanoref,1,2)", new String("aa"));
   
    /* Preenche o relatório com os dados. Gera o arquivo BibliotecaPessoal.jrprint */
    //JasperFillManager.fillReportToFile("C:/jakarta-tomcat-4.1.29/webapps/pmg/contasconsumo_c/relatorios/BibliotecaPessoal.jasper",parameters,jrRS);

    /* Exporta para o formato PDF */
    //JasperExportManager.exportReportToPdfFile("C:/jakarta-tomcat-4.1.29/webapps/pmg/contasconsumo_c/relatorios/BibliotecaPessoal.jrprint");

    /* Preenche o relatorio e o salva diretamente em arquivo PDF. Sem
    a necessidade do .jrprint */
    //JasperRunManager.runReportToPdfFile("C:/jakarta-tomcat-4.1.29/webapps/pmg/contasconsumo_c/relatorios/BibliotecaPessoal.jasper", parameters, jrRS);

    /* Visualiza o relatório em formato PDF */
    //JasperViewer.viewReport("C:/jakarta-tomcat-4.1.29/webapps/pmg/contasconsumo_c/relatorios/BibliotecaPessoal.pdf",false);

    JasperPrint jprint = JasperManager.fillReport("C:/jakarta-tomcat-4.1.29/webapps/pmg/contasconsumo_c/relatorios/BibliotecaPessoal.jasper", parameters, jrRS);
    JasperViewer.viewReport(jprint,false);
}

public static void main(String[] args) throws JRException, Exception
{
    new RelatorioBibliotecaPessoal().geraRelatorio();
}

}[/code]

as minhas duvisas são as seguintes:

1ª DUVIDA
eu coloquei no relatorio os parametros

[list]CodPrestador[/list]
[list]CodSecretaria[/list]
[list]NumAnoRef[/list]
[list]NumMesRef[/list]
[list]NomeSecretaria[/list]

dentro do Report query eu coloquei assim:

select * from teste.vgeral where cdPrestador=$P{CodPrestador} and cdSecretaria=$P{CodSecretaria} and substr(to_char(nrMesAnoRef),4,4) = $P{NumAnoRef}

rodando do ireport funciona legal, e inclusive eu mando em pdf, então é o seguinte, na minha classe a query esta assim:

    String query = "select * from teste.vgeral where cdprestador = 4 and cdsecretaria = 700 and substr(nrmesanoref,4,4) = '2004'";

como eu devo colocar? eu ja tenho que jogar aqui mesmo os parametros dentro da classe? ou eu nao tenho que fazer a query aqui e montar la no relatorio, mas acontece que as vezes não vao todos os parametros que esta acima… entao acredito que eu tenha que montar na classe mesmo a query como bem desejar, ou melhor, como o usuario desejar…

2ª DUVIDA
eu instalei recentemente a versao 4.1.0 do ireport, rodei o relatorio por la, e funcionou, mas na hora em que eu tento rodar pelo meu jsp, não funciona… acredito que tenha a ver com os import’s, pois teria que usar o

[list]net.sf.jasperreports.engine.JasperManager[/list]
[list]net.sf.jasperreports.engine.design.JasperDesign[/list]
[list]net.sf.jasperreports.engine.JasperReport[/list]
[list]net.sf.jasperreports.engine.JasperPrint[/list]
[list]net.sf.jasperreports.view.JasperViewer[/list]

é que eu nao consigo achar isso, mas beleza… estou fazendo na versao antiga e pelo menos nessa esta funcionando, ou seja, esta aparecendo o relatorio…

3ª DUVIDA
eu nao consigo fazer o relatorio aparecer em pdf, da pau… entao eu só deixo habilitado essas linhas na classe… o que dizia respeito ao pdf eu deixei desabilitado, pois nao consigo fazer funcionar…

    JasperPrint jprint = JasperManager.fillReport("C:/jakarta-tomcat-4.1.29/webapps/pmg/contasconsumo_c/relatorios/BibliotecaPessoal.jasper", parameters, jrRS);
    JasperViewer.viewReport(jprint,false);

alguem tem alguma ideia do que seja?

obrigado, desculpem qualquer coisa, não foi por mal… muito agradecido pela paciência…

Há duas opções quanto a queries:

  1. Passar um ResultSet para gerar o relatório: neste caso, não importa a query que está declarada no relatório.
  2. Passar parametros para a query dentro do relatorio: neste caso a query executada é a que está declarada no relatório, e é necessário passar um objeto Connection para gera-lo.

Cabe a você decidir qual é mais útil em cada momento.

Quanto à segunda dúvida … bem, não coloque regras de negócio dentro de páginas JSP. Faça um servlet e importe as dependências necessárias lá.

E a terceira dúvida, o que quer dizer “eu nao consigo fazer o relatorio aparecer em pdf, da pau”? Alguma exceção ocorre? Qual?

ps.: quando for postar código, coloque-o entre as tags [ code]seucodigo[ /code], assim ele ficará endentado.

Beleza Lipe, vou começar a endentar o meu código para postar aqui no guj.
Eu vou procurar a perguntar em partes, pela primeira duvida ta OK!!!

Você tinha me falado isso aqui

[quote]Há duas opções quanto a queries:

  1. Passar um ResultSet para gerar o relatório: neste caso, não importa a query que está declarada no relatório. [/quote]

então:

[code]essa me parece a correta, haja visto que o usuário ira escolher as
opções para a realização do relatório, ou seja, não existe a necessidade
de passar parametros para o relatório, eu posso fazer isso na query e o
relatório ira ser gerado, ou seja, eu tenho na minha classe essa linha
abaixo:

String query = “select * from teste.vgeral where cdprestador = 4 and
cdsecretaria = 700 and substr(nrmesanoref,4,4) = ‘2004’”; [/code]

[code]ou seja, é só pegar os parametros da minha jsp e transfererir para a
minha classe e a classe gera o relatório, eu só não sei como fazer isso,
(da jsp passar para a minha classe), mas acredito que eu estudando mais
eu consiga fazer isso, eu sou iniciante e estou aprendendo a mexer com
tudo isso.

então eu não vou precisar usar nada disso abaixo certo?

    Map parameters = new HashMap(); (obs: essa eu sei que sou

obrigado a usar, menos as demais que estão abaixo)
// parameters.put(“COLUNA”, valor);
//parameters.put(“cdPrestador”, new Integer(1));
//parameters.put(“cdSecretaria”, new Integer(1));
//parameters.put(“nmSecretaria”, new String(“aa”));
//parameters.put(“substr(nrmesanoref,1,2)”, new String(“aa”));
//parameters.put(“substr(nrmesanoref,1,2)”, new String(“aa”));[/code]

[code]se bem que não teria problema nenhum passar os parametros por aqui e
não usa-los na query, haja visto que ja estou fazendo a query inteira
acima pois tem um dos parametros que não uso não usaria na
query, e sim no titulo do relatorio, que seria o nome da secretaria.

mas se eu passar mesmo, como devo passar? no exemplo
esta assim:
// parameters.put(“COLUNA”, valor);
a coluna é a coluna que eu deixei no relatorio, no caso seria
CodPrestador e o valor, o que vier da jsp certo?
[/code]

estou correto Lipe? obrigado

Você pode passar um ResultSet para o relatório junto com um mapa de parametros sem problema.

So seu caso, que é necessário imprimir o nome da secretária, siga os seguintes passos de exemplo:

  1. Declare um parametro chamado ‘NOME_SECRETARIA’ so iReports, como String.
  2. Coloque um campo dinamico cujo valor é o do parametro passado onde desejar.
  3. Quando for montar o relatorio, faça assim:
Map parameters = new HashMap();
parameters.put( "NOME_SECRETARIA", "Srta. Valdicléia" );
ResultSet rs = conn.createStatement().executeQuery( query );
JRResultSetDataSource jr = new JRResultSetDataSource( rs );

// etc

// aqui constrói o relatorio com o result set e os parametros
jasperPrint = JasperFillManager.fillReport(
	jasperReport, parameters, jr );

Bom Lipe, consegui fazer isso que vc me falou, ta funcionando essa parte,
depois eu vejo como fazer para mandar os parametros da jsp para a
classe!!!

eu vou pular a segunda duvida e ir para a terceira que é a respeito de
mostrar o relatorio em pdf. Eu habilitei estas duas linhas abaixo e
desabilitei as demais:

[code]JasperRunManager.runReportToPdfFile("C:/jakarta-tomcat-
4.1.29/webapps/pmg/contasconsumo_c/relatorios/BibliotecaPessoal.jasper
", parameters, jrRS);

JasperViewer.viewReport(“C:/jakarta-tomcat-
4.1.29/webapps/pmg/contasconsumo_c/relatorios/BibliotecaPessoal.pdf”,f
alse);[/code]

O problema que acontece é esse quando tento usar o relatorio em pdf

[code]HTTP Status 500 -


type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: com/lowagie/text/DocumentException
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:254)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2417)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:193)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:781)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:549)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:589)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:666)
at java.lang.Thread.run(Thread.java:534)

root cause

javax.servlet.ServletException: com/lowagie/text/DocumentException
at org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:536)
at org.apache.jsp.ccc_relatorio_jsp._jspService(ccc_relatorio_jsp.java:63)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:137)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:210)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2417)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:193)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:781)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:549)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:589)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:666)
at java.lang.Thread.run(Thread.java:534)


Apache Tomcat/4.1.29[/code]

obrigado mais uma vez!!! obs: uma coisa que observei no pessoal ai, é
que eles deixam de usar em formato pdf porque da muito problema! é
que seria interessante deixar em formato pdf, não é mesmo!!!

Pera, seu objetivo é mostrar o pdf dentro do browser do usuário? Se sim, a abordagem é completamente diferente disto:

JasperRunManager.runReportToPdfFile("C:/jakarta-tomcat-
 4.1.29/webapps/pmg/contasconsumo_c/relatorios/BibliotecaPessoal.jasper
 ", parameters, jrRS);
 
 JasperViewer.viewReport("C:/jakarta-tomcat-
 4.1.29/webapps/pmg/contasconsumo_c/relatorios/BibliotecaPessoal.pdf",f
 alse);

Deveria ser algo como:

byte[] b = JasperExportManager.exportReportToPdf( jasperPrint )

response.setContentType( "application/pdf" );
response.setHeader( "Content-Disposition",
		"inline;filename=relatorio.pdf" );

OutputStream os = response.getOutputStream();

os.write( b );

os.flush();
os.close();

muito obrigado pela grande ajuda que vc esta me dando Lipe, se bem me
lembro, ja me ajudou em varios assuntos anteriormente!!!

[quote=LIPE]Pera, seu objetivo é mostrar o pdf dentro do browser do usuário? Se sim, a abordagem é completamente diferente disto:

JasperRunManager.runReportToPdfFile("C:/jakarta-tomcat-
 4.1.29/webapps/pmg/contasconsumo_c/relatorios/BibliotecaPessoal.jasper
 ", parameters, jrRS);
 
 JasperViewer.viewReport("C:/jakarta-tomcat-
 4.1.29/webapps/pmg/contasconsumo_c/relatorios/BibliotecaPessoal.pdf",f
 alse);

Deveria ser algo como:

[code]
byte[] b = JasperExportManager.exportReportToPdf( jasperPrint )

response.setContentType( “application/pdf” );
response.setHeader( “Content-Disposition”,
“inline;filename=relatorio.pdf” );

OutputStream os = response.getOutputStream();

os.write( b );

os.flush();
os.close();
[/code][/quote]

Bom, é que é o seguinte, quando eu rodo o relatório pelo ireport,
ele me joga o relatório em formato pdf, porque existe esta opção no ireport.

Realmente, o meu interesse é na hora em que o usuário clicar nas
opções, e depois clicar em imprimir relatório, deve ser gerado um
arquivo pdf na tela que nem quando eu mandava pelo
JasperViewer.viewReport(jprint,false);

agora assim que eu coloquei seu codigo no meu, ficaram com um x
ao lado, significa que devo importar algo?

obrigado pela força!!!

Como assim um “X” do lado? Aquele que o IE coloca quando uma imagem não existe no url especificado?

É importante se certificar que esta linha:

byte[] b = JasperExportManager.exportReportToPdf( jasperPrint )

está retornando realmente um array de bytes.

Também verifique se o seu browser exibe arquivos pdf corretamente.

[quote=LIPE]Como assim um “X” do lado? Aquele que o IE coloca quando uma imagem não existe no url especificado?

É importante se certificar que esta linha:

byte[] b = JasperExportManager.exportReportToPdf( jasperPrint )

está retornando realmente um array de bytes.

Também verifique se o seu browser exibe arquivos pdf corretamente.[/quote]

Oi Felipe, bom dia, o que eu queria dizer, é que o x é um erro que esta
dando, parece que esta faltando importar alguma classe… mandei um
email pra vc, pois não sei se estou sendo claro, e como não manjo sobre
java, sou iniciante, achei que mostrando seria bom, desculpa se não
consegui te passar o meu problema

o browser exibe arquivos pdf sim, eu ja fiz varios testes, e não tem
problema, se bem que estou fazendo isso tudo na minha maquina, mais
tarde vou passar essa consulta para o servidor, ai ja é outro problema
né…

[code]
É importante se certificar que esta linha:

byte[] b = JasperExportManager.exportReportToPdf( jasperPrint )

está retornando realmente um array de bytes.[/code]

sobre isso eu ja não sei como me certificar… como eu poderia fazer isso,
teria como me ajudar com isso também?

abraços, obrigado!!!

Bem, antes de mais nada, por ser um iniciante deveria estar BEM longe de relatórios, jdbc e servlets. O que vai inevitavelmente acontecer é se deparar com problemas cuja solução, por enquanto, parecerá impossível.

Mesmo assim, o que deve fazer é debugar sua aplicação, e verificar se o byte realmente contém qualquer coisa.

Se ainda não souber como debugar, pode fazer algo simples como
System.out.println( b.length );
E verificar o console do seu ServletContainer.

Vale bastante a pena ler este tópico aqui:
http://www.guj.com.br/posts/list/1664.java

Mas, sério, se puder optar neste momento, pare tudo o que está fazendo e estude beeeeem as bases do Java. Caso contrário está fadado ao mesmo destino que eu: em dado momento tive que esquecer tudo que tinha “aprendido” (pois todos os conceitos estavam errados) e começar do zero de novo. Isso sem contar as centenas de cabelos perdidos hehe.

E o problema é outro: o trecho de código que eu te passei não é exato. Nele presumi que você está criando e populando um objeto JasperPrint.

Como no seu primeiro trecho de código:

JasperPrint jprint = JasperManager.fillReport("C:/jakarta-tomcat-4.1.29/webapps/pmg/contasconsumo_c/relatorios/BibliotecaPessoal.jasper", parameters, jrRS);

Então poderia fazer:

byte[] b = JasperExportManager.exportReportToPdf( jprint );

[quote=LIPE]Bem, antes de mais nada, por ser um iniciante deveria estar
BEM longe de relatórios, jdbc e servlets. O que vai inevitavelmente
acontecer é se deparar com problemas cuja solução, por enquanto,
parecerá impossível.

Mesmo assim, o que deve fazer é debugar sua aplicação, e verificar se o
byte realmente contém qualquer coisa.

Se ainda não souber como debugar, pode fazer algo simples como
System.out.println( b.length );
E verificar o console do seu ServletContainer.

Vale bastante a pena ler este tópico aqui:
http://www.guj.com.br/posts/list/1664.java

Mas, sério, se puder optar neste momento, pare tudo o que está fazendo
e estude beeeeem as bases do Java. Caso contrário está fadado ao
mesmo destino que eu: em dado momento tive que esquecer tudo que
tinha “aprendido” (pois todos os conceitos estavam errados) e começar
do zero de novo. Isso sem contar as centenas de cabelos perdidos hehe.[/quote]

Então Lipe, depois que li isso que me escreveu, te confesso que fiquei
perturbado rsrs, é que ja estou tentando fazer isso a mais ou menos 1
ano, e não consigo sair do lugar… eu realmente sou um iniciante em
java, mas acredito que só quebrando a cabeça eu conseguirei aprender
algo, e justamente os relatórios que me falta para terminar tudo o que
gostaria de fazer neste projetinho, ja dei muito sangue, e infelizmente
não posso parar agora, o que acredito que eu deva fazer, é estudar mais
muitas coisas, mas sempre batendo na tecla para aprender a escutar o
tom e passar a diante… desculpe-me se fiquei te perturbando, você foi
mais uma vitima das minhas perguntas inciantes, ja procurei de mais
sobre o assunto… eu devo muito ao pessoal do guj por eu ter chegado
onde estou, no começo eu nao sabia nem fazer um jsp simples… e hoje
consegui fazer um tres jsp, um que o usuario faz as opções, o outro é a
geração em listagem de todas contas de consumo pelas opções, e na
listagem cada conta é um link que vai para outro jsp e me controi os
detalhes daquela conta clicada… o que faltou seria os benditos relatorios
que me pediram ao término do que eu tinha feito… percebe!!! é de
matar saber que eu não consiguirei terminar…

Mas acredito que esteja certo… realmente devo estudar muito mais, mas
isso vc pode acreditar que faço todos os dias… infelizmente não tenho
muito tempo, só se eu fizer isso nas minhas madrugadas, mas acredito
que se fizer isso não vou ter capacidade mental de resolver meus
problemas no dia seguinte, e olha que em muitos casos trabalho nas
madrugadas e em finais de semana sem reclamar… eu ja programo a
nove anos, só que em visual basic, e em delphi, agora que estou
aprendendo a trabalhar com java…

[quote]Se ainda não souber como debugar, pode fazer algo simples como
System.out.println( b.length );
E verificar o console do seu ServletContainer.[/quote]

eu nao tenho ideia do que vc me falou, o que é ServletContainer… mas
não precisa responder, eu mesmo vou procurar isso Lipe… não esquente
com os detalhes… para eu aprender prefiro quebrar a cabeça e como vc
mesmo falou, perder os cabelos, eu não gosto muito deles mesmo… rsrs

eu vou dar uma boa lida do link que vc me passou tambem… te agradeço
muito carinha… e quando vc diz bases de java… vc esta se referindo o
inicio do inicio mesmo né… acredito que por eu querer fazer tudo isso,
pulei algumas partes bem importantes e de alguma forma consegui
chegar onde cheguei, uma forma foi com vocês ao meu lado, disso não
tenho duvidas nenhuma, o pessoal aqui é show de bola… ajuda mesmo!!!

mas estou muito agradecido e vou tentar resolver de alguma forma isso
aqui… mesmo que eu tenha que ir para sampa fazer curso, ou que eu
peça para o meu chefe enviar alguem que conheça disso e me ajudar…

[quote=LIPE]E o problema é outro: o trecho de código que eu te passei não é exato. Nele presumi que você está criando e populando um objeto JasperPrint.

Como no seu primeiro trecho de código:

JasperPrint jprint = JasperManager.fillReport("C:/jakarta-tomcat-4.1.29/webapps/pmg/contasconsumo_c/relatorios/BibliotecaPessoal.jasper", parameters, jrRS);

Então poderia fazer:

byte[] b = JasperExportManager.exportReportToPdf( jprint );

[/quote]

ok, vou tentar fazer aqui, e depois eu te falo mais, eu vou postando…
acredito que isso serve para muitos iniciantes também né…

valeu Lipe…
ai galera, esse é o cara heim!!!

Opa Thomas, fico lisonjeado com seus agradecimentos, porém, sendo esta uma comunidade, estou apenas me comportando da mesma maneira que qualquer outro por aqui :smiley:

Bem, ServletContainer é o seu Tomcat. A coisa que roda os servlets.

E não precisa ter medo de perguntar não cara :smiley: só lembre-se de primeiro tentar os artigos do GUJ, depois a busca no fórum, depois o Google e ENTÃO aqui hehe :smiley:

bons estudos!

[quote=LIPE]Opa Thomas, fico lisonjeado com seus agradecimentos, porém, sendo esta uma comunidade, estou apenas me comportando da mesma maneira que qualquer outro por aqui :smiley:

Bem, ServletContainer é o seu Tomcat. A coisa que roda os servlets.

E não precisa ter medo de perguntar não cara :smiley: só lembre-se de primeiro tentar os artigos do GUJ, depois a busca no fórum, depois o Google e ENTÃO aqui hehe :smiley:

bons estudos![/quote]

BOM DIA, beleza… eu to fazendo isso também, mas é que tem horas que
realmente a pessoa pede arrego e recorre pra quem pode mais rsrs…
valeu Lipe… valeu pessoal do guj…

a propósito, existe algum livro que trata do assunto Lipe…?