Fórum Jaspersoft Studio 6 vs NetBeans 8 #509347

03/02/2015

0

Olá, agradeço ajuda desde já

Fui baixar o iReport, e no site informa que será descontinuado, mesmo assim baixei, e coincidentemente nao executava na minha máquina(nao sei prq). Entao baixei a versao mais recente JasperSoft Studio. Mas tutorial de utilizaçao no NetBeans(plugins,e bibliotecas ta dificil)...

Eu consegui fazer relatórios no próprio Jasper, mas o problema ta como levar para o NetBeans.

Alguem saberia de utilizaçao do TIBCO Jaspersoft Studio-6.0.1.final com o NetBeans 8.0.1.

Olhei de todo geito na Net, mas so tem tutorial do Ireport
Eric Clauber

Eric Clauber

Responder

Posts

20/03/2015

Edilmar Alves

Para usar o Jaspersoft Studio, voce tera que criar um projeto, configurar em Libraries as bibliotecas adicionais ou scriptlets que usa e apontar o Source para a pasta dos seus relatorios. Entao, conseguira compilar na boa o .jrxml e gerar o .jasper na mesma pasta, continuando a usar o NetBeans normalmente para o restante do trabalho.
Responder

Gostei + 0

23/03/2015

Thiago Lessa

Pelo que sei, o IReport agora tem como IDE base o Eclipse. Até o IReport mudou de nome. Agora chama-se JasperSoft Studio. Mas a dinâmica de montagem dos relatórios continua a mesma. Baixei há algumas semanas e não vi muita diferença de quando utilizava o NetBeans.
Responder

Gostei + 0

25/08/2015

Romilson Cardoso

Eric, tudo bem? O que esta precisando?
Responder

Gostei + 0

27/08/2015

Eric Clauber

Opa Romilson,

Essa questão resolvi utilizando o Ireport com NetBeans 7.4 mesmo. Pois já estava acostumado e não queria mudar para o Eclipse, já que a nova versão(Jasper report), é compatível com Eclipse.

Mas tenho outra dúvida e ja ia abrir um novo Tópico aqui no fórum, se puder ajudar, agradeço.

Os relatórios que estou fazendo, até agora esta me suprindo. Só que estou precisando colocar mais de um filtro(parametros). Está dando certo assim: Se eu passar 2 filtros tipo;

where codigo = $P and data = $P >>>> Até aqui no 'select' funciona. O problema é quando nesta situação quero passar apenas um filtro. Tipo se tenho um relatório com dez filtros, mas na hora que o usuário for utilizar ele quer filtrar só pela 'data'. Assim o relatório não traz página por causa do 'and' e se trocar pelo 'or', traz tudo.

Não sei se fui claro, segue código.

public void imprimirCadClienteRota(int codRota/*, int codPraca, int codCliente*/) {
conexao = ConexaoBanco.fabricaConexao();

try {
//HashMap filtro = new HashMap();
Map<String, Object> filtro = new HashMap<String, Object>();
filtro.put("codRotaInt", codRota);
//filtro.put("codRota", codRota);
// filtro.put("codPraca", codPraca);
//filtro.put("codCliente", codCliente);
JasperPrint impressao = JasperFillManager.fillReport("C:/JRMaxSistema/build/classes/relatorios/RelClientesPorRotaResumido.jasper", filtro, conexao);
JasperViewer viwer = new JasperViewer(impressao, false);
viwer.setVisible(true);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Erro ao imprimir" + e);
}
}
Responder

Gostei + 0

27/08/2015

Romilson Cardoso

Isso é fácil de resolver.

Crie um paramento no seu relatório com qualquer nome por exemplo: SQLFiltro (do tipo string) e no seu SQL do relatório use assim:
select campos... FROM tabela $P!

Agora no seu bean você monta o seu filtro colocando os filtros que deseja e passe da seguinte forma parameters.put("SQLFiltro", SQLFiltro);, Eu faço assim e funciona sem problemas. Você fazer também para ordenar os campos de acordo com selecionado usando o mesmo principio. Espere que te ajude. E desculpe se não fui bem claro na explicação.

exemplo:

SQLFiltro = " WHERE campo like '" + nomeVfaturamentoatendimento.trim() + "%' ";
if (filtro == 1) {
SQLFiltro = SQLFiltro + " and descempresa like '" + nomeEmpresa.trim() + "%' and ano = " + fano;
} else if (filtro == 2) {
SQLFiltro = SQLFiltro + " and descempresa like '" + nomeEmpresa.trim() + "%' ";
} else if (filtro == 4) {
SQLFiltro = SQLFiltro + " and descempresa like '" + nomeEmpresa.trim() + "%' and data = " + fdata;
} else if (filtro == 3) {
SQLFiltro = SQLFiltro + " and nome like '" + nomeEmpresa.trim() + "%' ";
} else if (filtro == 5) {
SQLFiltro = SQLFiltro + " and usuariocad like '" + nomeEmpresa.trim() + "%' ";
}

Espero que tenha ajudado.
Responder

Gostei + 0

27/08/2015

Eric Clauber

Romilson, não entendi muito bem, o código java.

E de onde vem esse if (filtro == 1) ...

Para cada combinaçao de filtros terei um código?

Ex.: Filtro A, B, C. Terei 7 combinações(códigos)? (a), (b), (c), (a + b), (a + c), (b + c), (a + b +c). Sendo assim, se for 10 filtros, serão centenas ou milhares de combinaçoes... rsrs.
Responder

Gostei + 0

27/08/2015

Romilson Cardoso

Não precisa.

Te passei o exemplo como eu faço meu filtro SQL. Hoje como você faz seu filtro? Por exemplo o seu filtro

filtro.put("codRotaInt", codRota);
//filtro.put("codRota", codRota);
// filtro.put("codPraca", codPraca);
//filtro.put("codCliente", codCliente);

Concorda que você tem que verificar se os códigos estão vazios ou não? neste caso seu poderia fazer assim?
SQLFiltro = " where 1=1 ";
if (codRota != null){
SQLFiltro += " and codRota = " + codRota;
} else if (codPraca != nul) {
SQLFiltro += " and codPraca = " + codPraca;
} else if (codCliente != nul){
SQLFiltro += " and codCliente = " + codCliente;
}

//
//se todos os campos estivese ok ficaria assim seu
//SQL: where 1=1 and codRota = 1 and codPraca = 1 and codCliente = 1
//SQL: where 1=1 and codRota = 1 and codPraca = 1
//
filtro.put("SQLFiltro", SQLFiltro);
Responder

Gostei + 0

27/08/2015

Eric Clauber

Romilson creio que tenha entendido desta vez... rs! Mas to tentando aqui, e não ta passando a String para o filtro. Mas testei direto no relatório(visualizar) e da certo. Passo a String ex.: r.codrota = 3 and p.codpraca = 1 and c.codcli = 10.


// meu código ficou assim. tirei os 'else if' e deixei so if, pois nao dava retorno nenhum. e coloquei .isEmpty no lugar de null, prq tb nao dava retorno. E pra eu saber o que tava //retornando validei em System.out.println(filtros).

// Mas o filtro não ta passando para o relatorio. Falta um detalhe minusculo pra da certo... rs

public void imprimirCadClienteRota(String codRota, String codPraca, String codCliente) {
conexao = ConexaoBanco.fabricaConexao();

try {
HashMap filtro = new HashMap();
//Map<String, Object> filtro = new HashMap<String, Object>();

String filtros = "";

if (!codRota.isEmpty()) {
filtros += "r.codrota = " + codRota;
}
if (!codPraca.isEmpty()) {
filtros += " and p.codpraca = " + codPraca;
}
if (!codCliente.isEmpty()) {
filtros += " and c.codcli = " + codCliente;
}
//filtros = "r.codrota = 3";

filtro.put("filtros", filtros);
System.out.println(filtros);
JasperPrint impressao = JasperFillManager.fillReport("C:/JRMaxSistema/build/classes/relatorios/RelClientesPorRotaResumido.jasper", filtro, conexao);
JasperViewer viwer = new JasperViewer(impressao, false);
viwer.setVisible(true);
} catch (Exception e) {
JOptionPane.showMessageDialog(null, "Erro ao imprimir" + e);
}
}
Responder

Gostei + 0

27/08/2015

Romilson Cardoso

Beleza,

me passe então o que saiu no System.out.println(filtros) e o seu select o relatório.


Que eu consigo analisar melhor.
Responder

Gostei + 0

27/08/2015

Eric Clauber

Segue o select:

select
c.codcli,
c.razaosocial,
c.fantasia,
c.cnpjcpf,
c.responsavel,
c.endereco,
c.numero,
c.cidade,
c.cep,
c.pontoref,
c.telcomercial,
c.telcelular,
c.ultnumped,
c.ultvalorped,
c.percdesc,
c.situacao,
p.codpraca,
p.praca,
r.codrota,
r.descricao
from
cliente as c,
praca as p,
rota as r where $P!(do tipo String) // coloquei aqui a clausula where, pois da no próprio relatório
****************************************************************************************************************************************************************8

No System.out.println(). Sai a String correta, e os valores que sao passado pelos parametros, de entrada do método:

saida: r.codrota = 3 and p.codpraca = 1 and c.codcli = 10.

so que o filtro.put(filtros) nao esta passando para o relatório.
Responder

Gostei + 0

27/08/2015

Romilson Cardoso

Faz seguinte coloque a clausula where no filtros vai ver que vai dar certo.

faz um teste forçado dazendo assim no filtro where 1 = 1 e veja o que acontece.

geralmente um uso o inner join ou left join.


Qualquer coisa posta novamente.
Responder

Gostei + 0

28/08/2015

Eric Clauber

kkkkkkkkkkk...

Romilson, tava cometendo uma garfe aqui, agora deu certo. O problema não tava passando os filtro para o relatório, era que a localização do arquivo(.jasper) na aplicação, é diferente quando testo direto no relatório. Toda vez que faço alteração no relatório tenho que copiar para do local padrao, para o da aplicaçao.

1- Ex.: copio para >> "C:/Sistema/build/classes/relatorios/RelClientesPorRotaResumido.jasper". Isso é um dos problemas que ja tentei solução, mas sem sucesso. Tipo independente do local, que ele lesse no 'pacote' do java e não na localização, assim eu poderia mudar a aplicaçao de Disco/Local, sem se preocupar com isso.

Sem querer abusar de sua boa vontade, mas quando se programa e aprende só, a briga é maior... rsrs!

2- Se eu não passar nenhum filtro, deixar todos em branco da erro por causa do 'and' lá no SQL.
-- Ex: where $P! and c.codpraca = p.codpraca and p.codrota = r.codrota ou assim where c.codpraca = p.codpraca and p.codrota = r.codrota and $P!

3- Se eu deixar os primeiros filtros em branco, e utilizar os ultimos tb da erro, creio que seja por causa do and tb.
-- ex: sai assim and p.codpraca = 1
Responder

Gostei + 0

28/08/2015

Romilson Cardoso

Deixe assim:
where c.codpraca = p.codpraca and p.codrota = r.codrota

e no filtros passe o resto $P! pois só vai passar o AND quando realmente tive alguma condição vindo do filtro.

Obs: Você não usa uma data para filtra pelo período? Imagine seu banco crescendo e pelo que você coloca pode trazer tudo ou somente o do filtro.
Responder

Gostei + 0

28/08/2015

Romilson Cardoso

Beleza, que bom que ajudei. Precisando é só falar.
Responder

Gostei + 0

28/08/2015

Romilson Cardoso

Tenho que ver a respeito do Jaspersoft studio ainda não parei para ver isso. Mas acredito que você pode alterar o local da pasta no jaspersoft studio.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar