Olá Beto

Ainda sobre (para não perder o costume).

Problema semelhante à mensagem anterior com Servlet.

Em meu projeto da Faculdade tenho a seguinte situação:

Quero fazer um relatório que forneça todos os registros atendendo a 
seguinte busca:
        Por tipo de busca, onde seleciono Por marca ou Por grupo. 
Sendo que conforme for o tipo da busca, 
forneço o nome da marca ou o nome do grupo. Para tal tenho um JSP 
onde digito no campo tipoconsulta "grupo" ou "marca".  
e no campo txtconsulta onde digito o nome da marca ou do grupo.

O meu relatorio deveria receber estas duas informações e executar a 
sql conforme abaixo:

  SQL1 - Se a busca for por grupo "Select nom_grupo, nom_marca, 
nom_modelo, descricao FROM veiculo v, modelo md, marca m, grupo g 
where v.marca_modelo_Cod_modelo = md.Cod_modelo and v.marca_Cod_marca 
= m.Cod_marca and v.Grupo_Cod_grupo = g.Cod_grupo and Nom_grupo 
like '"+txtconsulta+"'";
           

  SQL2 - Se a busca for por marca "Select nom_grupo, nom_marca, 
nom_modelo, descricao FROM veiculo v, marca m, modelo md, grupo g 
where v.marca_modelo_Cod_modelo = md.Cod_modelo and v.Grupo_Cod_grupo 
= g.Cod_grupo and v.Marca_Cod_marca = m.Cod_marca and Nom_marca 
like '"+txtconsulta+"'";
       

Criei um relatório no ireport no qual, para teste, eu coloquei uma 
das duas sql na query, substituindo txtconsulta 
pelo nome do grupo (ex: economico na SQL1) ou nome da marca (ex: Fiat 
na SQL2).
O relatório no ireport funciona sem problemas e me retorna um 
relatório contendo todos os veículos do grupo econômico 
ou todos os veículos Fiat, conforme a sql que eu colocar na query.

Tenho um JSP onde seleciono o tipoconsulta e digito o txtconsulta 
(Consultarveiculos.jsp)
Criei um JSP que chama um arquivo .jasper (Veiculos.jsp), que deveria 
atender as condições abaixo:

 if (tipoconsulta.equals("grupo")){
            sql="Select nom_grupo, nom_marca, nom_modelo, descricao 
FROM veiculo v, modelo md, marca m, grupo g where 
v.marca_modelo_Cod_modelo = md.Cod_modelo and v.marca_Cod_marca = 
m.Cod_marca and v.Grupo_Cod_grupo = g.Cod_grupo and Nom_grupo 
like '"+txtconsulta+"'";
           } else
           if (tipoconsulta.equals("marca")){
            sql="Select nom_grupo, nom_marca, nom_modelo, descricao 
FROM veiculo v, marca m, modelo md, grupo g where 
v.marca_modelo_Cod_modelo = md.Cod_modelo and v.Grupo_Cod_grupo = 
g.Cod_grupo and v.Marca_Cod_marca = m.Cod_marca and Nom_marca 
like '"+txtconsulta+"'";
       } 

Como faço para informar no Veiculos.jsp que eu quero fazer um sql 
conforme o tipoconsulta e txtconsunta?

Eu tenho como colocar estas condições dentro do ireport?

Segue o meu Veiculos.jsp:

<%@ page import="net.sf.jasperreports.view.*" %>
<%@ page import="net.sf.jasperreports.engine.*" %>
<%@ page import="java.util.*" %>
<%@ page import="java.io.*" %>
<%@ page import="javax.sql.*" %>
<%@ page import="java.sql.*" %>
<%@ page import="javax.naming.*" %>
<%@ page errorPage="Erro2.jsp" %>
<%@ page import="java.lang.String" %>
<%@ page import="java.sql.*" %>
<%@ page import="conexao.Conexao" %>

<%
Conexao con = new Conexao();



File reportFile = new File(application.getRealPath("/WEB-
INF/classes/veiculos.jasper"));

Map parameters = new HashMap();


byte[] bytes = JasperRunManager.runReportToPdf(reportFile.getPath (), 
parameters, con);

response.setContentType("application/pdf");
response.setContentLength(bytes.length);
ServletOutputStream ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();
%>

GRATO!!!





--- In [email protected], beto silva <[EMAIL PROTECTED]> 
wrote:
> Fala Meu Camarada Betão
>  
> Foi de grande valia a tua ajuda. Meu relatório está disponível em 
minha aplicação. Ufa!!! Mais um passo avançado. MUITO GRATO!!!
>  
> Agora pergunto duas em uma. hehe
>  
> Se puderes me ajudar.
>  
> Valeu!!!
>  
> Grato
>  
> Beto
>  
>  
> 1º O próximo agora será buscar enviar parâmetros de um JSP para o 
meu PDF. Posso fazê-lo com o ireport? Como devo declarar as variáreis?
>  
> 2º Peguei um exemplo na Net que realiza um PDF utilizando Servlet. 
Para visualizar um relatório com um só registro eu consegui fazer 
rodar. Com este exeplo eu criei um outro que deveria pegar dois 
parâmetros e mostrar todos os registros envolvidos, e na realidade 
quando chamo o Servlet me acusa o erro a seguir:
> 
> type Exception report 
> 
> message 
> 
> description The server encountered an internal error () that 
prevented it from fulfilling this request. 
> 
> exception 
> 
> java.lang.NullPointerException 
> NovoRelatoriopesquisarveiculos.doGet
(NovoRelatoriopesquisarveiculos.java:47) 
> javax.servlet.http.HttpServlet.service(HttpServlet.java:689) 
> javax.servlet.http.HttpServlet.service(HttpServlet.java:802) 
> 
> 
> note The full stack trace of the root cause is available in the 
Apache Tomcat/5.0.28 logs.
> 
> Pelo que vejo, ele acusa que estou invocando uma variável nula. No 
meu JSP existem os campos "tipoconsulta" e "txtconsulta". O meu erro 
está na declaração das variáveis no Servlet? A seguir meu enrolado 
código:
> 
> import java.io.*; 
> import java.sql.*; 
> import java.text.*; 
> import java.util.*; 
> import javax.servlet.*; 
> import javax.servlet.http.*; 
> import java.awt.Color; 
> import com.lowagie.text.*; 
> import com.lowagie.text.pdf.*; 
> import conexao.Conexao; 
> import java.sql.Connection; 
> import java.net.*; 
> 
>        public class NovoRelatoriopesquisarveiculos extends 
HttpServlet { 
>            Vector nom_grupoVector = new Vector(); 
>            Vector nom_marcaVector = new Vector(); 
>            Vector nom_modeloVector = new Vector(); 
>            Vector descricaoVector = new Vector(); 
>     
>    //construtor da classe 
>         public NovoRelatoriopesquisarveiculos() { 
>       } 
> 
> //  método doPost - implementado 
>        public void doPost(HttpServletRequest 
req,HttpServletResponse res) 
>              throws ServletException, IOException { 
>             throw new ServletException("Não implementado"); 
>        } 
> 
>    //método doGet - implementado 
>        public void doGet(HttpServletRequest req,HttpServletResponse 
res) 
>       throws ServletException, IOException { 
> 
> //res.setContentType( "text/plain" ); 
>                
>     String tipoconsulta = req.getParameter("tipoconsultaHid"); 
>     String txtconsulta = req.getParameter("txtconsultaHid"); 
> 
> Conexao connection = null; 
>   try { 
>     connection = new Conexao(); 
>    String sql=""; 
> 
>      
>   
>  if (tipoconsulta.equals("1")){ 
>        sql="Select nom_grupo, nom_marca, nom_modelo, descricao FROM 
veiculo v, modelo md, marca m, grupo g where 
v.marca_modelo_Cod_modelo = md.Cod_modelo and v.marca_Cod_marca = 
m.Cod_marca and v.Grupo_Cod_grupo = g.Cod_grupo and Nom_grupo 
like '%"+txtconsulta+"%'"; 
>         } else 
>       if (tipoconsulta.equals("2")){ 
>        sql="Select nom_grupo, nom_marca, nom_modelo, descricao FROM 
veiculo v, marca m, modelo md, grupo g where 
v.marca_modelo_Cod_modelo = md.Cod_modelo and v.Grupo_Cod_grupo = 
g.Cod_grupo and v.Marca_Cod_marca = m.Cod_marca and Nom_marca 
like '%"+txtconsulta+"%'"; 
>        } else 
>       if (tipoconsulta.equals("3")){ 
>       sql="Select nom_grupo, nom_marca, nom_modelo, descricao FROM 
veiculo v, marca m, modelo md, grupo g where 
v.marca_modelo_Cod_modelo = md.Cod_modelo and v.Grupo_Cod_grupo = 
g.Cod_grupo and v.Marca_Cod_marca = m.Cod_marca and Nom_modelo 
like '%"+txtconsulta+"%'"; 
>       } else 
>       if (tipoconsulta.equals("4")){ 
>       sql="Select nom_grupo, nom_marca, nom_modelo, descricao FROM 
veiculo v, marca m, modelo md, grupo g where 
v.marca_modelo_Cod_modelo = md.Cod_modelo and v.Grupo_Cod_grupo = 
g.Cod_grupo and v.Marca_Cod_marca = m.Cod_marca"; 
>       } 
>    ResultSet rs = connection.executeQuery(sql); 
>     
>    String tipoconsultaHidden="";    
>   
>    while (rs.next()){ 
>     nom_grupoVector.addElement(rs.getString("Nom_grupo")); 
>     nom_marcaVector.addElement(rs.getString("Nom_marca")); 
>     nom_modeloVector.addElement(rs.getString("Nom_modelo")); 
>     descricaoVector.addElement(rs.getString("Descricao")); 
>       } 
> 
>          } catch(SQLException e){ 
>           // res.sendRedirect("../erro2.jsp?mensagem="+e.getMessage
()); 
>             res.sendRedirect("/gustavo/mensagem.jsp?
mensagem="+e.getMessage()); 
>              return; 
>          }finally { 
>            if (connection!=null) 
>            connection.fecharConexao(); 
>            connection=null; 
>           } 
>   //Fim da conexão 
> 
> /*******************************************************************
***************/ 
> /*                             GERAÇÂO DO 
PDF                                     */ 
> 
>   ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
> 
>         PdfWriter writer = null; 
>         Document document = null; 
>         Paragraph para = null; 
>          // Fontes usadas no PDF 
>         Font titleFont = new Font(Font.HELVETICA, 18, 
Font.BOLDITALIC, new Color(128, 128, 128)); 
>         Font smallFont = new Font(Font.HELVETICA, 8, 
Font.BOLDITALIC, new Color(128, 128, 128)); 
> 
>         document = new Document(PageSize.A4, 40, 40, 50, 50); 
> 
> for(int i=0;i<nom_marcaVector.size();i++) { 
> 
>         try { 
>          // Faz o PdfWriter escrever no baos 
>             writer=PdfWriter.getInstance(document, baos); 
> 
>             document.addAuthor("Alberto"); // optional 
>             document.addSubject("Projeto SLVW"); // opcional 
>    document.open(); // abre o documento para escrita 
> 
>          // Adiciona o header 
>          para=new Paragraph("Projeto SLVW",titleFont); 
>          para.setAlignment(para.ALIGN_CENTER); 
>          HeaderFooter header = new HeaderFooter(para, false); 
>          document.setHeader(header); 
> 
>          // Coloca o número da pagina como footer 
>          HeaderFooter footer = new HeaderFooter(new Phrase(""), new 
Phrase("")); 
>          footer.setAlignment(Element.ALIGN_CENTER); 
>          document.setFooter(footer); 
> 
>           
>          // Adiciona mais uma página 
>              para=new Paragraph("Projeto SLVW",titleFont); 
>              para.setAlignment(para.ALIGN_CENTER); 
>              document.add(para); 
>    document.add(new Paragraph("")); 
>    document.add(new Paragraph("")); 
>          document.add(new Paragraph("")); 
>          document.add(new Paragraph("Nome do grupo ")); 
>          document.add(new Paragraph(" "+nom_grupoVector.elementAt
(i),smallFont)); 
>          document.add(new Paragraph("")); 
>          document.add(new Paragraph("Nome da Marca ")); 
>          document.add(new Paragraph(" "+nom_marcaVector.elementAt
(i),smallFont)); 
>          document.add(new Paragraph("")); 
>          document.add(new Paragraph("Nome do Modelo")); 
>          document.add(new Paragraph(" "+nom_modeloVector.elementAt
(i),smallFont)); 
>          document.add(new Paragraph("")); 
>          document.add(new Paragraph("")); 
>          document.add(new Paragraph("Descrição")); 
>          document.add(new Paragraph(" "+descricaoVector.elementAt
(i),smallFont)); 
>          document.add(new Paragraph("")); 
>          document.newPage(); 
>          // Fecha o documento 
>        document.close(); 
>    } catch (Exception e) { 
>             e.printStackTrace(); 
>         } 
>         // Configura o tipo de arquivo e envia o baos 
>         res.setContentType("application/pdf"); 
>         SimpleDateFormat dtNameFormat = new SimpleDateFormat
("yyyyMMdd_hh_mm_ss"); 
>         res.setContentLength(baos.size()); 
>         ServletOutputStream out = res.getOutputStream(); 
>         baos.writeTo(out); 
>         out.flush(); 
> } 
>     //Final da criação do PDF 
>     } 
> } 
> 
>  
>  
> 
> Luiz Alberto <[EMAIL PROTECTED]> escreveu:
> Fala, betão
>  
> Te mandei em private um tutorial do iReport que explica como 
desenvolver e chamar reports via servlet, jsp, e, se preferir, via 
classes Action do Struts
> Qualquer duvida, tamos aí.
>  
>  
> Abraços,
> Beto
>  
> 
> rjbeto1 <[EMAIL PROTECTED]> escreveu:
> Olá Beto
> 
> Tua ajuda foi fundamental para que eu conseguisse compilar meu 
> código. Devido a falta de conhecimentos, estou terminando a 
> Faculdade, ainda tenho muito o que aprender. E continuo contando 
com 
> tua ajuda. Valeu?
> 
> Agora tenho uma classe GerarRelatorio.class criada a partir 
> do .jasper. Como faço para habilitá-la dentro de minha aplicação em 
> JSP?
> 
> Eu havia criado uma outra classe com servlet e a chamei utilizando 
a 
> linha de comando href='/gustavo/servlet/Relatoriogrupo'>Grupo"); %
>e funcionou 
> perfeitamente me criando um PDF. 
> 
> Para o que criei com tua ajuda, tentei chamar utilizando: 
> __________________________________________________
> Converse com seus amigos em tempo real com o Yahoo! Messenger 
> http://br.download.yahoo.com/messenger/ 
> 
> 
> SPONSORED LINKS 
> Basic programming language C programming language Computer 
programming languages The c programming language C programming 
language List of programming languages 
> 
> ---------------------------------
> YAHOO! GROUPS LINKS 
> 
> 
>     Visit your group "jug-petropolis" on the web.
>   
>     To unsubscribe from this group, send an email to:
>  [EMAIL PROTECTED]
>   
>     Your use of Yahoo! Groups is subject to the Yahoo! Terms of 
Service. 
> 
> 
> ---------------------------------
> 
> 
> 
>               
> ---------------------------------
>  Yahoo! Messenger com voz: PROMOÇÃO VOCÊ PODE LEVAR UMA VIAGEM NA 
CONVERSA. Participe!






------------------------ Yahoo! Groups Sponsor --------------------~--> 
Fair play? Video games influencing politics. Click and talk back!
http://us.click.yahoo.com/T8sf5C/tzNLAA/TtwFAA/5cFolB/TM
--------------------------------------------------------------------~-> 

 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/jug-petropolis/

<*> To unsubscribe from this group, send an email to:
    [EMAIL PROTECTED]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/
 



Atrašyti