boa tarde… o básico de minha aplicação está quase concluído… faltando somente dois relatorios…1º rel.: dias entre datas (data atual e data vencimento) 2º rel.: relatorio principal e subrelatorio… agradeço antecipadamente pela ajuda :roll:
Dias entre datas ireport
24 Respostas
se vc estiver usando uma conexão com banco para gerar o relatorio vc pode fazer a contagem de dias atraves do SQL
um exemplo no Oracle seria
SELECT TRUNC((data_atual - data_vencimento), 0) AS “diferenca” FROM tabela
sim estou carregando meus relatorios com conexao do bd mysql…
atravez de uma varialvel seria possivel :?:
tipo: data_atual - F${data_vencimento}
no MySQl vc pode calcular assim
SELECT DATEDIFF(CURDATE(),data_vencimento)
ai soh utilizar como field no relatorio 
krak!!! valew!!!
1 de abril… deu certinho aki agora so me resta fazer um relatorio principal e um subrelatorios (um detalhe as tabelas sao distintas) expl.: o ID da tabela parcelamento e diferente do ID da tabela caixa, o unico campo que coinside são as datas expl.: data_recebimento e data_retirada… ate q consegui fazer aki mas quando vou na aplicação o subrelatorio nao aparece. alguma ideia :?:
passa mais alguns detalhes desse relatorio…
as consultas sao independentes ou vc passa parametros de uma pra outra? se nao forem vc ja tentou usar list?
ou pode ser alguma propriedade do subrelatorio que esta deixando em branco
no iReport ja esta funcionando certinho e soh na aplicacao q nao mostra?
relatorio principal
- query esta assim…: select *from tbl_parcelamento, tbl_faturamento, tbl_clientes, tbl_vendedor, tbl_caixa WHERE tbl_faturamento.OPERACAO = tbl_parcelamento.OPERACAO and tbl_faturamento.CLIENTE = tbl_clientes.CODIGO_CLI and tbl_faturamento.VENDEDOR = tbl_vendedor.CODIGO and tbl_caixa.DATA = $P{DATA} ORDER BY tbl_faturamento.CLIENTE desc, tbl_parcelamento.OPERACAO desc, tbl_parcelamento.PARCELA
* PROPRIEDADE DO PARAMENTRO…: $P{DATA}
- parameter class = java.util.date
A PROPRIEDADE DO SUBRELATORIO QUE ESTA NO PRINCIPAL
- Subreport expression = “C:\R1.NET\R1.NET\relatorios\rel_caixa_sub2.jasper”
- Expression Class = java.lang.String
- Connection type = Use as connection
- Connection exrpesion = $P{REPORT_CONNECTION}
- parameters = DATA, $F{DATA_RECBTO}
esse mesmo parametro (DATA) esta no subrelatorio tbem
a query do sub relatorio esta assim: select *from tbl_caixa WHERE tbl_caixa.DATA = $P{DATA}
Obs.: no i report ele esta ok… mostrando dados do principal e do sub
na aplicação estou tentando chamar o principal e sub assim:
[conexaoRelat con = new conexaoRelat();
public void cx() {
String relatsub = “c:/R1.NET/R1.NET/relatorios/rel_teste_subreport1.jasper”;
try {
DialogRelatorios viewer = new DialogRelatorios(null, true);
viewer.setTitle(“Relatório de Caixa”);
viewer.setSize(970,650);
viewer.setLocationRelativeTo(null);
Map parameters = new HashMap();
con.conecta();
con.executeSQL("select *from tbl_parcelamento, tbl_faturamento, tbl_clientes, tbl_vendedor ");
JRResultSetDataSource jrRS = new JRResultSetDataSource( con.resultset );
parameters.put("REPORT_CONNECTION", relatsub);
//parameters.put("DATA", relatsub);
JasperFillManager.fillReportToFile( "C:\\R1.NET\\R1.NET\\relatorios\\rel_caixa.jasper", parameters, jrRS );
JasperExportManager.exportReportToPdfFile( "C:\\R1.NET\\R1.NET\\relatorios\\rel_caixa.jrprint" );
JasperViewer viewe = new JasperViewer("C:\\R1.NET\\R1.NET\\relatorios\\rel_caixa.jrprint", false, false
viewer.getContentPane().add(viewe.getContentPane());
viewe.setVisible(true);
viewer.setVisible(true);
viewe.setVisible(false);
} catch (Exception erro){
JOptionPane.showMessageDialog(null, "Erro = " + erro);
}
} ]
bom se eu uso o parameters.put(“REPORT_CONNECTION”, relatsub);
recebo uma mensagem dizendo:
Erro = net.sf.japerreports.engine.JRException: incompatible java.lang.String value assingned to parameter Report_connection in the rel_caixa dataset
entao acho que o erro esta no caminho do subrelatorio
aqui vc atribui String relatsub = "c:/R1.NET/R1.NET/relatorios/rel_teste_subreport1.jasper";
no iReport vc colocou Subreport expression = “C:\R1.NET\R1.NET\relatorios\rel_caixa_sub2.jasper”
ve certinho se os nomes e caminhos estao corretos
um jeito mais pratico eh utilizar os metodos da classe File… getAbsolutePath() na aplicacao :idea:
:?:1 de abril… eu fiz a correção do endereço e continua enviando a mensagem: Erro = net.sf.japerreports.engine.JRException: incompatible java.lang.String value assingned to parameter Report_connection in the rel_caixa dataset
como seria os metodos da classe File… getAbsolutePath() na aplicacao :?: vc tem um modelo ai :?:
veja se esse post te ajuda
http://www.guj.com.br/posts/list/169897.java
não entendi essa linha: List m = contratanteDAO.find(strQuery);
e ainda nao localizei no ireport :(Parameter class type) dori.jasper.engine.JRDataSource…
a versão do ireport e 3.7.0 encontrei combo (Parameter class) e nao ha a opção dori.jasper.engine.JRDataSource
eu tava pensando na parte do $P{REPORT_CONNECTION}
que no caso ele substituiu por outro parametro
veja se esse parametro esta certo na sua aplicacao
e na propriedade no iReport
a propriedade do $P{REPORT_CONNECTION} ja fica definida no ireport...
esta assim: paramenter class = java.sql.connection
e na aplicação estou usando assim:
String relatsub = "c:/R1.NET/R1.NET/relatorios/rel_caixa_sub2.jasper";
Map parameters = new HashMap();
parameters.put("REPORT_CONNECTION", relatsub);
eu coloquei o endereço da string inexistente
String relatsub = "c:\\R1.NET\\R1.NET\\relatorios\\rel_ca ";...
ainda assim a mensagem nao mudou continua
Erro = net.sf.japerreports.engine.JRException: incompatible java.lang.String value assingned to parameter Report_connection in the rel_caixa dataset
e como se o paramentro nao exista ou esta nullo… o que acha :?:
pelo erro fala que o parametro Report_connection do seu dataset nao pode ser String… deve ser outro tipo
vai nas propriedades do seu subreport na Expression class esta java.lang.String
tenta alterar o tipo da propriedade ou de algum parametro String
uma hora tem q da certo… hehe :lol:
fiz varias tentativas mudando a propriedade Expression class no parametro $P{DATA}…
no ireport a propriedade do parametro $P{DATA} está como: java.util.Date quando mudo a propriedade no ireport, nao aparece o subrel
.
so exite o parametro $P{DATA} criado por mim… será que devo criar um parametro de conexão aparte ou de mesmo usar o Report_connection :roll:
nao o tipo do parametro $P{DATA} deixa java.util.Date msm
eu me referi a Expression class do subreport
tipo… seleciona seu subreport no relatorio principal la tem essa propriedade e deve estar java.lang.String
veja se tem um combobox com as opcoes java.io.File… java.net.URL… entre outras… acho que ai esta o tipo incompativel
fiz as mudanças na Expression class do subreport e a mensagem continua a mesma:
Erro = net.sf.japerreports.engine.JRException: incompatible java.lang.String value assingned to parameter Report_connection in the rel_caixa dataset
acho q a string q a mensagem esta informando seria esta:
String relatsub = "c:\\R1.NET\\R1.NET\\relatorios\\rel_caixa_sub2.jasper ";
acho isso porque mudei de:
parameters.put("REPORT_CONNECTION", relatsub);
para:
parameters.put("REPORT_CONNECTION", con);
a mensagem mudou para:
Erro = net.sf.japerreports.engine.JRException: incompatible conexaoRelat value assingned to parameter Report_connection in the rel_caixa dataset
o que acha :?:
entao pelo que vi o parametro $P{REPORT_CONNECTION} pode ser vazio… tenta tirar esse parametro da aplicacao
mas se nao der… ele deve receber um atributo do tipo Connection e vc ta passando um conexaoRelat
e ao inves de vc passar parametro do subrelatorio assim
String relatsub = "c:\\R1.NET\\R1.NET\\relatorios\\rel_caixa_sub2.jasper ";
parameters.put("REPORT_CONNECTION", relatsub);
vc tem que passar pra este parametro
parameters.put("SUBREPORT_DIR",relatsub);
tenta ae 
mudei meu codigo fonte para:
private class Relatorio2{
conexaoRelat con = new conexaoRelat();
public void cx2() {
//String pdf = "C:\\R1.NET\\R1.NET\\relatorios\\rel_caixa.pdf";
String relat = "C:\\R1.NET\\R1.NET\\relatorios\\rel_caixa.jasper";
String relatsub = "c:\\R1.NET\\R1.NET\\relatorios\\rel_caixa_sub2.jasper ";
String drive = "com.mysql.jdbc.Driver";
String ur = "jdbc:mysql://localhost:3306/bdr";
String log = "root";
String senh = "nalldo36";
try {
Class.forName(drive);
Connection conn = DriverManager.getConnection(ur,log,senh);
conn.setAutoCommit(false);
PreparedStatement consulta = conn.prepareStatement("select *from tbl_parcelamento, tbl_faturamento, tbl_clientes, tbl_vendedor ");
ResultSet rs = consulta.executeQuery();
JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);
PreparedStatement consulta2 = conn.prepareStatement("select *from tbl_caixa");
ResultSet rs2 = consulta2.executeQuery();
JRResultSetDataSource jrRSS = new JRResultSetDataSource(rs2);
HashMap parameters = new HashMap();
parameters.put("SUBREPORT_DIR", relatsub);
parameters.put("REPORT_CONNECTION",jrRSS);
String impressao = JasperFillManager.fillReportToFile(relat, parameters, jrRS );
JasperViewer.viewReport("C:\\R1.NET\\R1.NET\\relatorios\\rel_caixa.jrprint",false,false);
JasperExportManager.exportReportToPdfFile(impressao);
conn.rollback();
consulta.close();
} catch (Exception erro){
JOptionPane.showMessageDialog(null, "Erro = " + erro);
}
}
}
recebo uma mensagem de erro:
Erro = net.sf.japerreports.engine.JRException: incompatible net.st.jasperreports.engine.JRResultSeteDataSouce value assingned to parameter Report_connection in the rel_caixa dataset :roll:
mudei novamente para:
<blockquote>private class Relatorio2{
conexaoRelat con = new conexaoRelat();
public void cx2() {
//String pdf = "C:\\R1.NET\\R1.NET\\relatorios\\rel_caixa.pdf";
String relat = "C:\\R1.NET\\R1.NET\\relatorios\\rel_caixa.jasper";
String relatsub = "c:\\R1.NET\\R1.NET\\relatorios\\rel_caixa_sub2.jasper ";
String drive = "com.mysql.jdbc.Driver";
String ur = "jdbc:mysql://localhost:3306/bdr";
String log = "root";
String senh = "nalldo36";
try {
Class.forName(drive);
Connection conn = DriverManager.getConnection(ur,log,senh);
conn.setAutoCommit(false);
PreparedStatement consulta = conn.prepareStatement("select *from tbl_parcelamento, tbl_faturamento, tbl_clientes, tbl_vendedor ");
ResultSet rs = consulta.executeQuery();
JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);
HashMap parameters = new HashMap();
parameters.put("SUBREPORT_DIR", relatsub);
parameters.put("REPORT_CONNECTION", conn);
String impressao = JasperFillManager.fillReportToFile(relat, parameters, jrRS );
JasperViewer.viewReport("C:\\R1.NET\\R1.NET\\relatorios\\rel_caixa.jrprint",false,false);
JasperExportManager.exportReportToPdfFile(impressao);
conn.rollback();
consulta.close();
} catch (Exception erro){
JOptionPane.showMessageDialog(null, "Erro = " + erro);
}
}
}
agora abre o relatorio sem nenhuma mensagem… porem o rel_caixa_sub2 nao aparece!!! :?
fiz um teste na query do relatorio que e assim:
select *from tbl_parcelamento, tbl_faturamento, tbl_clientes, tbl_vendedor WHERE tbl_faturamento.OPERACAO = tbl_parcelamento.OPERACAO and tbl_faturamento.CLIENTE = tbl_clientes.CODIGO_CLI and tbl_faturamento.VENDEDOR = tbl_vendedor.CODIGO and tbl_parcelamento.DATA_RECBTO = $P{DATA} ORDER BY tbl_faturamento.CLIENTE desc, tbl_parcelamento.OPERACAO desc, tbl_parcelamento.PARCELA desc
mudei para… retirando (and tbl_parcelamento.DATA_RECBTO = $P{DATA})
select *from tbl_parcelamento, tbl_faturamento, tbl_clientes, tbl_vendedor WHERE tbl_faturamento.OPERACAO = tbl_parcelamento.OPERACAO and tbl_faturamento.CLIENTE = tbl_clientes.CODIGO_CLI and tbl_faturamento.VENDEDOR = tbl_vendedor.CODIGO ORDER BY tbl_faturamento.CLIENTE desc, tbl_parcelamento.OPERACAO desc, tbl_parcelamento.PARCELA desc
será que ha algo de errado no minha query da aplicação que e assim:
resolvido :lol: quero agradecer pela boa vontade e a gentileza do colega 1 de abril pela ajuda ficou assim:
private class Relatorio2{
public void cx2() {
String selecionado = "";
String selecionado1 = "";
String selecionado2 = "";
String selecionado3 = "";
selecionado = "tbl_faturamento.OPERACAO = tbl_parcelamento.OPERACAO " +
" and tbl_faturamento.CLIENTE = tbl_clientes.CODIGO_CLI " +
" and tbl_faturamento.VENDEDOR = tbl_vendedor.CODIGO " ;
selecionado3 = " ORDER BY tbl_faturamento.CLIENTE desc, tbl_parcelamento.OPERACAO desc, " +
" tbl_parcelamento.PARCELA";
if (jcbHoje.isSelected()){
GregorianCalendar cal = new GregorianCalendar();
cal.add(GregorianCalendar.DATE,0);
Date data = cal.getTime();
SimpleDateFormat formata = new SimpleDateFormat("dd/MM/yyyy");
String resultado = formata.format(data);
txtDataAtual.setText(resultado);
selecionado1 = "tbl_parcelamento.DATA_RECBTO = '"+formatDataGravar(txtDataAtual.getText())+"' ";
}else{
if (jcbPeriodo.isSelected()){
selecionado2 = " tbl_parcelamento.DATA_RECBTO BETWEEN '"+formatDataGravar(ftxDataInicial.getText())+"' " +
"AND '"+formatDataGravar(ftxDataFinal.getText())+"'" ;
}}
//String pdf = "C:\\R1.NET\\R1.NET\\relatorios\\rel_caixa.pdf";
String relat = "C:\\R1.NET\\R1.NET\\relatorios\\rel_caixa.jasper";
String relatsub = "c:\\R1.NET\\R1.NET\\relatorios\\rel_caixa_sub2.jasper ";
String drive = "com.mysql.jdbc.Driver";
String ur = "jdbc:mysql://localhost:3306/bdr";
String log = "root";
String senh = "nalldo36";
try {
DialogRelatorios viewer = new DialogRelatorios(null, true);
viewer.setTitle("Filtro de Débitos do Cliente");
viewer.setSize(970,650);
viewer.setLocationRelativeTo(null);
Class.forName(drive);
Connection conn = DriverManager.getConnection(ur,log,senh);
conn.setAutoCommit(false);
PreparedStatement consulta = conn.prepareStatement("select *from tbl_parcelamento, tbl_faturamento, " +
"tbl_clientes, tbl_vendedor " +
"Where "+ selecionado + " and " + selecionado1 + " " + selecionado2 + " " + selecionado3 );
ResultSet rs = consulta.executeQuery();
JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);
HashMap parameters = new HashMap();
parameters.put("SUBREPORT_DIR", relatsub);
parameters.put("REPORT_CONNECTION", conn );
String impressao = JasperFillManager.fillReportToFile(relat, parameters, jrRS );
JasperViewer viewe = new JasperViewer("C:\\R1.NET\\R1.NET\\relatorios\\rel_caixa.jrprint",false,false);
JasperExportManager.exportReportToPdfFile(impressao);
viewer.getContentPane().add(viewe.getContentPane());
viewe.setVisible(true);
viewer.setVisible(true);
viewe.setVisible(false);
conn.rollback();
consulta.close();
} catch (Exception erro){
JOptionPane.showMessageDialog(null, "Erro = " + erro);
}
}
}
valeeeeewwwww....
Aeeew!! teh q enfim ein hehe :lol:
fico um pokim maior do que a gente pensava… rs
mas eh isso ai…
eh bom tentar ajudar qdo a gente tb esta aprendendo 