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/