[color=darkblue]Queria saber se é possível criar Grid`s ou Table no IReport, se possível queria um Exemplo prático, estou com dificuldades em encontrar.
Quem puder ajudar desde já agradeço.[/color]
[color=darkblue]Queria saber se é possível criar Grid`s ou Table no IReport, se possível queria um Exemplo prático, estou com dificuldades em encontrar.
Quem puder ajudar desde já agradeço.[/color]
Você pode fazer um relatório em forma tabular sem problema nenhum.
[color=darkblue] Você conhece algum tutorial para seguir, teria algum exemplo apenas para iniciar ?[/color]
Aqui nesse site http://www.furutani.com.br/tag/ireport/ eu tenho alguns tutoriais.
Espero que te ajude.
[color=darkblue] Ajudou
, muito obrigado ![/color]
Bom galera estou tentando acessar este link para ver como se faz e não estou conseguindo… estou precisando criar uma tabela também.
[color=darkblue] No começo também tive problemas, mas de qualquer forma tente acessar esse aqui :[/color]
Bom colegas será que isso seria uma solução para o meu problema?
O meu problema está neste tópico:
http://www.guj.com.br/posts/list/131145.java
Fico no aguardo, abraço e brigado pela atenção
[quote=Paezani]Bom colegas será que isso seria uma solução para o meu problema?
O meu problema está neste tópico:
http://www.guj.com.br/posts/list/131145.java
Fico no aguardo, abraço e brigado pela atenção[/quote]
[color=darkblue] Não sei isso resolveria seu problema pelo que vi, mas eu tentaria dessa forma, usei SubReport e funcionou perfeitamente, meu ralatório possui campos estatícos e uma tabela dentro de um Form, solucionei todos os meu problemas assim, se tiver alguma dúvida é só postar que eu respondo, se quiser deixo aqui um arquivo de teste para você com código[/color]
Então mas o problema está no detail que é preenchido de acordo com os dados de uma tabela do banco de dados que pode variar de acordo com o funcionário, um pode ter 5, outro 10…e queria ter um tamanho fixo independente do número de registros…
Se puder deixar um arquivo de teste seria talvez de melhor entendimento…
abraço
[quote=Paezani]Então mas o problema está no detail que é preenchido de acordo com os dados de uma tabela do banco de dados que pode variar de acordo com o funcionário, um pode ter 5, outro 10…e queria ter um tamanho fixo independente do número de registros…
Se puder deixar um arquivo de teste seria talvez de melhor entendimento…
abraço[/quote]
[color=darkblue]Eu não sei bem como você trabalha com os dados, mas vamos partir do ponto de que seus dados vêm de uma pesquisa, claro que a uma tabela no banco, logo você poderia simplesmente limitar a origem dos seus dados com um “limit” (MySql) ou um “Rownum” (Oracle).
Caso sua fonte de dados estaja em uma coleção qualquer, você poderia percorrer 5 registros dessa coleção inserindo em outra coleção a qual o Jasper recebe os dados.
Eu partiria desse princípio, se não é possível trabalhar no Jasper, limitaria isso na fonte.
[/color]
Bom, estou usando o MySql, mas acho que o limit não seria útil pois, limitaria o número de registros… Mas o que quero, é que se tenho 7 ou 5 ou 3 registros neste recibo, tenha 10 linhas por exemplo, na banda detail.
Pensei em incluir registros em branco para completar o numero de registros no banco, mas ocuparia espaço…sem dados …se tivesse 7 itens, incluiria 3 em branco…
[color=darkblue] Ao invés de criar os registros em branco no banco, não seria possível criar uma função simples, do tipo, [/color]
[color=darkblue] A função simplesmente iria completar a “List” que carrega os valores para o Jasper[/color]
Bom Metaleiro, eu faço a consulta na query no Ireport…Usando o:
JRBeanCollectionDataSource ds = new JRBeanCollectionDataSource(completaCampos(list));
Eu não teria que fazer a consulta na classe java? Eu nunca usei desta maneira… Se quiser eu posto a classe que gera o relatório…
Obrigado pela paciência e atenção
[color=darkblue] Sim você poderia fazer em uma classe ou simplemente criar um método para usar como postei.[/color]
Bom eu uso este relatório na WEB, chamo ele através da servlet abaixo, ele mostra o relatório em pdf:
import java.sql.*;
import java.text.DecimalFormat;
import java.io.*;
import java.util.Date;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import beans.BDConnection;
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.engine.data.JRBeanArrayDataSource;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import net.sf.jasperreports.engine.export.JRHtmlExporter;
import net.sf.jasperreports.engine.util.JRLoader;
import net.sf.jasperreports.view.JasperViewer;
import java.util.Calendar;
import java.util.Map;
import java.util.HashMap;
import java.sql.*;
public class rRecibo extends HttpServlet
{
boolean status ;
ResultSet rs ;
String codFun, mesano;
public void doGet (HttpServletRequest req , HttpServletResponse res)
throws IOException, ServletException
{
codFun = req.getParameter("codFunc");
mesano = req.getParameter("mesano");
Conectar conexao = new Conectar();
if(conexao.conecta(true))
{
ServletContext context = getServletContext();
byte[] bytes = null;
try {
JasperReport relatorioJasper= null ;
String pathJasper = getServletContext().getRealPath("/WEB-INF/reports/") + "/";
String path = getServletContext().getRealPath("/");
Map parametros = new HashMap();
relatorioJasper = (JasperReport)JRLoader.loadObject(context.getRealPath("/WEB-INF/reports/recibo.jasper"));
parametros.put("mesano","'"+mesano+"'");//valor da competência
parametros.put("codFun","'"+codFun+"'");//código do funcionário
// direciona a saída do relatório para um stream
bytes = JasperRunManager.runReportToPdf(relatorioJasper,parametros,conexao.MinhaConexao);
}
catch (JRException e) {
e.getMessage();
}
// envia o relatório em formato PDF para o browser
res.setContentType("application/pdf");
res.setContentLength(bytes.length);
ServletOutputStream ouputStream = res.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();
try {
conexao.MinhaConexao.close();
}
catch (SQLException e) {
e.printStackTrace();
}
}
else
{
ServletOutputStream ouputStream2 = null;
ouputStream2.print("Não foi possível se conectar com o banco de dados.");
}
}
}
Agora aonde entraria o JRBeanCollectionDataSource? Eu como te falei nunca mexi com este recurso… Se vc pudessse me ensinar passo a passo…
Fico no aguardo,
Obrigado pela atenção e paciência
[color=darkblue]Agora entendi a dificuldade, é que geralmente eu passo uma list, para facilitar qualquer tipo de validação, então o que eu faria realmente seria na query, limitar os números de registros e passar parâmetros com "" , assim você poderia controlar, query dá para fazer uma série de coisas, é só você usar algo do tipo : [/color]
[url=http://talibamartins.wordpress.com/2007/09/20/if-e-case-no-mysql/]IF e CASE no Mysql[/url]
[color=darkblue]Assim você pode controlar se o valor vier "null" você passar uma String "", limitando a 10 valores a partir do que já estiver correto [/color]
[color=darkblue]Agora entendi a dificuldade, é que geralmente eu passo uma list, para facilitar qualquer tipo de validação, então o que eu faria realmente seria na query, limitar os números de registros e passar parâmetros com “” , assim você poderia controlar, query dá para fazer uma série de coisas, é só você usar algo do tipo : [/color]
[color=darkblue]Assim você pode controlar se o valor vier “null” você passar uma String “”, limitando a 10 valores a partir do que já estiver correto [/color]
Bom pessoal consegui resolver o problema pela query do relatório, usando o union all e o limit no MySQL:
select
func.nome,
func.salario as sal,
folhapgto.bruto,
folhapgto.liq as liq
from folhapgto
inner join funcionarios as func on func.id = folhapgto.idfuncionario
Union All
select
'' as nome,
0.00 as sal,
0.00 as bruto,
0.00 as liq
from funcionarios
order by func.nome
limit 12
O limite 12 junto com union all retornará 12 registros , por exemplo, 5 com dados e 7 td em branco…
Talvez exista uma solução via relatório com as propriedades, mas valeu
Obrigado Metaleiro pela paciência
[color=darkblue]Ficou legal a solução [/color]
Blz Paezani…
Será q vc poderia postar a classe q vc citou?
Gostaria de entender melhor…
Tenho q criar um relatorio, mas estou patinando…
Desde de já Agradeço…
Vlw