import java.sql.*;
import javax.swing.*;
public class conexao{
final private String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
final private String url = "Jdbc:Odbc:Estoque";
final private String usuario = "";
final private String senha = "";
private Connection conexao;
public Statement statement;
public ResultSet resultset;
public boolean conecta(){
boolean result = true;
try{
Class.forName(driver);
conexao = DriverManager.getConnection(url, usuario, senha);
JOptionPane.showMessageDialog(null, "Conectado com o Banco de Dados!");
}
catch(ClassNotFoundException Driver){
JOptionPane.showMessageDialog(null, "Driver não Localizado " + Driver);
result = false;
}
catch(SQLException Fonte){
JOptionPane.showMessageDialog(null, "Deu erro na conexão " + "com a fonte de dados " + Fonte);
result = false;
}
return result;
}
public void executeSQL(String sql){
try{
statement = conexao.createStatement();
statement = conexao.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
resultset = statement.executeQuery(sql);
}
catch(SQLException sqlex){
JOptionPane.showMessageDialog(null, "Não foi possivel " +
"executar o comando sql, " + sqlex + ", o sql passado foi " + sql);
}
}
já tenho meu Relatório criado no Ireport (estoque.jasper), porém estou tendo dificuldades
na hora de efetuar a conexão do mesmo com o Netbeans (chamar o relatório através de um jButton por exemplo)
tentei montar a “classe Relatorio” e é aqui que minha dificuldade entra, aqui está minha classe:
package utilitarios;
import javax.swing.JOptionPane;
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.view.*;
import java.sql.*;
import java.util.*;
import utilitarios.conexao;
public class Relatorio {
conexao con = new conexao();
public void rel() {
try {
con.conecta();
con.executeSQL("select * from estoque");
JRResultSetDataSource jrRS = new JRResultSetDataSource(con.resultset); //nao sei se está certo
/* dentro do fillReport vao 3 parâmetros: nao sei qual é o primeiro então a principio
chamarei de reticências (...), o segundo imagino que seja new HashMap() pois nao vou adicionar
nada ao relatorio, e o terceiro deve ser o jrRS declarado acima */
JasperPrint jasperPrint = JasperFillManager.fillReport(... , new HashMap(), jrRS);
//a partir daqui nao sei mais o que fazer
} catch (Exception erro){
JOptionPane.showMessageDialog(null, "Erro = " + erro);
}
}
public static void main(String args[]) {
new Relatorio().rel();
}
}
já olhei um monte de tutoriais + mesmo assim não consigo entender, se alguém puder me ajudar
ficarei grato.
public class Relatorio {
conexao con = new conexao();
public void rel() {
try {
con.conecta();
con.executeSQL("select * from estoque");
JRResultSetDataSource jrRS = new JRResultSetDataSource(con.resultset); //nao sei se está certo
/* dentro do fillReport vao 3 parâmetros: nao sei qual é o primeiro então a principio
chamarei de reticências (...), o segundo imagino que seja new HashMap() pois nao vou adicionar
nada ao relatorio, e o terceiro deve ser o jrRS declarado acima */
JasperPrint jasperPrint = JasperFillManager.fillReport(... , new HashMap(), jrRS);
//a partir daqui nao sei mais o que fazer
} catch (Exception erro){
JOptionPane.showMessageDialog(null, "Erro = " + erro);
}
}
public static void main(String args[]) {
new Relatorio().rel();
}
public class Relatorio {
conexao con = new conexao();
public void rel() {
try {
con.conecta();
con.executeSQL("select * from estoque");
//Implementação da interface JRDataSource para DataSource ResultSet
JRResultSetDataSource jrRS = new JRResultSetDataSource( con.resultset );
//HashMap de parametros utilizados no relatório. Sempre instanciados mesmo sem parametros
Map parameters = new HashMap();
//parameters.put("COLUNA", valor);
//Preenche o relatório com os dados. Gera o arquivo lancamentosjuridico.jrprint
JasperFillManager.fillReportToFile( "caminnhoDoSeu.jasper", parameters, jrRS );
//Exporta para o formato PDF
JasperExportManager.exportReportToPdfFile( "caminhoDoSeu.jrprint" );
//Visualiza o relatório em formato PDF
JasperViewer.viewReport( "caminhoDoSeu.jrprint" , false , false);
} catch (Exception erro){
JOptionPane.showMessageDialog(null, "Erro = " + erro);
}
}
public static void main(String args[]) {
new Relatorio().rel();
}
}[/code]
Nesse exemplo não consegui visualizar em pdf, então visualizei com o viewer do Jasper mesmo.
Acho que assim funciona.
Tenta ai
T+
Se for isto, não estou querendo criar pdf, eu apenas fiz a classe
para mostrar o relatoro a tela. (só implementei um “main” ali para ver se funcionava minha classe).
Eu dei um “debug file” e o erro acontece quando chega na linha:
Nome da variável: CLASSPATH
Valor da variável: C:\Arquivos de programas\Java\jdk1.5.0_06\lib\tools.jar;C:\Arquivos de programas\JasperSoft\iReport-1.2.7\lib;
[quote=merso]até agora esse tópico tava dando problema,
agora voltou a funcionar?
:? [/quote]
É verdade, também não entendi :!: :?:
Tente o seguinte:
Vá até janela no netbeans depois arquivos, click com o botão direito do mouse em cima do seu projeto, vá até propriedades depois em bibliotecas clique em adicionar JAR localize a pasta lib do ireport e adicione todo conteúdo dela ao projeto.
Pode ser falta de alguma biblioteca.
Outra coisa, no ireport consegue visualizar o relatório?
deu o seguinte erro: Erro = net.sf.jasperreports.engine.JRException:java.io.FileNotFoundException: D:\JAVA\Projetos\Lactovel\estoque1.jrprint
deve ser porque ele nao achou o arquivo jrprint. Mas beleza, eu nem quero criar o pdf. (por enquanto)
dai eu coloquei a linha acima em comentário e troquei a linha que vinha depois:
Por algum motivo ele não está gerando o .jrprint que é para visualizar com viewer do jasper e fazer a impressão.
Verifique se os parametros do resultSet são os mesmos esperados pelo relatório do jasper.
Teste o resultSet pra saber se está recebendo os dados da consulta.
Com relação a:
não iria funcionar mesmo, ele espera um arquivo .pdf, .jrprint, .html, .xml etc.
Tente agora colocar ao invéz do caminho o arquivo, ou seja:
JRResultSetDataSource jrRS = new JRResultSetDataSource( con.resultset );
Map parameters = new HashMap();
//parameters.put("COLUNA", valor);
JasperFillManager.fillReportToFile( "estoque1.jasper", parameters, jrRS );
JasperExportManager.exportReportToPdfFile( "estoque1.jrprint" );
JasperViewer.viewReport( "estoque1.jrprint" , false , false);
Colocando o último arquivo compilado do jasper, o estoque1.jasper na pasta raiz do projeto.
fiz algumas mudanças na minha classe e consegui
fazer o que queria! \o
só que ainda tenho uma duvida:
Se eu não usar o tal .jrprint eu não vou conseguir imprimir?
do jeito que está o código, se eu usar a classe através de um jButton,
a aplicação exibe o relatório tudo certo. Dai se eu clicar no botãozinho da impressora,
aparece o seguinte erro: “Erro ao imprimir relatório. Verifique o donsole para detalhes.”
meu código está assim:
import javax.swing.JOptionPane;
import net.sf.jasperreports.engine.*;
import net.sf.jasperreports.view.*;
import java.sql.*;
import java.util.*;
import utilitarios.conexao;
public class Relatorio {
//conexão ao banco de dados
conexao con = new conexao();
public void rel() {
try {
con.conecta();
con.executeSQL("select * from estoque");
//Implementação da interface JRDataSource para DataSource ResultSet
JRResultSetDataSource jrRS = new JRResultSetDataSource( con.resultset );
//HashMap de parametros utilizados no relatório.
Map parameters = new HashMap();
//JasperFillManager.fillReportToFile("D:\\JAVA\\Projetos\\Lactovel\\Relatorio\\Estoque.jasper", parameters, jrRS );
//Exporta para o formato PDF
//JasperExportManager.exportReportToPdfFile( "D:\\JAVA\\Projetos\\Lactovel\\Relatorio\\Estoque.jrprint" );
//Visualiza o relatório em formato PDF
//JasperViewer.viewReport( "D:\\JAVA\\Projetos\\Lactovel\\Relatorio\\Estoque.jasper" , false , false);
JasperPrint jasperPrint = JasperFillManager.fillReport(
"D:\\JAVA\\Projetos\\Lactovel\\Relatorio\\Estoque.jasper", parameters, jrRS);
JasperViewer.viewReport(jasperPrint, false);
} catch (Exception erro){
JOptionPane.showMessageDialog(null, "Erro = " + erro);
}
}
public static void main(String args[]) {
new Relatorio().rel();
}
}
se eu conseguir criar o tal do .jrprint e mostrar o arquivo .pdf, eu consigo fazer a impressão?
O que seria esse corretamente, ele gerou o .jrprint?
Está visualizando o relatório atravéz da aplicação ou pelo ireport?
Nas linhas onde tem que colocar o diretório, eu só coloquei “Estoque.jasper” (troquei o nome de estoque1 para Estoque)
e só tinha esse arquivo .jasper na pasta do meu projeto.
Quando eu executo toda a aplicação, logo que eu clico no botão que chama a classe Relatório,
ele mostra o relatório perfeitamente, mas mostra pelo JasperViewer.
até ai tudo ok.
Dai eu fecho a aplicação, e vou na pasta do projeto.
Lá tem o arquivo .jasper, o .jrprint e o .pdf também.