IMPRIMIR NOTA DA VENDA usando o jasper

olá a todos aqui no forum!!!
preciso muito da ajuda de vcs.
É o seguinte ja vi muitas perguntas sobre este problema, mas vejo que poucos conseguiram resolver
eu acho que é tão simples pelo menos em cpascal é " eu acho".
Mas vamos lá. eu quero imprimir uma nota de venda.
preecho os dados que vão ser gravados no banco e quero imprimir a nota desta venda (so desta venda)
sei que tem que usar o filtro mas eu ja coloquei filtro no relatorio criado no ireport e la fuciona muito bem.
ai la no meu jasper no java eu consigo filtrar também e da certo mais eu tenho que colocar sempre o valor
ai ele so imprimi se tiver aquele valor digitado ai não da né!
ai tentei colocar o codigo no botão não obtive muito sucesso!
eu acho que isso é muito simples de fazer mais ta pegando aqui!
POR FAVOR ALGUÉM ME AJUDE !!! DESDE JA AGRADEÇO A TODOS!

Você pode ser mais claro.

Não consegui entender o seu problema.

Você precisa passar os parâmetros para o relatório. No relatório vc vai fazer os cálculos para exibir. Repara que no ireport, vc passa os valores, ou seja, valores que serão passados pelo java. No ireport vc só simula valores, que no java serão valores vindos do banco ou informados pelo usuário. Você também pode passar por exemplo um id da venda, e fazer um select pelo ireport, retornando os itens e calculando o total. Nos elaboramos um site voltado para incentivar o desenvolvimento em Java, inicialmente para Desktop. Na área de tutoriais, elaboramos um sobre a criação de relatórios e sub-relatórios. Embora não seja voltado diretamente para uma nota de venda, o conceito é o mesmo. Pode ser de ajuda para você. Além do tutorial do ireport, tem também: Tutorial SQL - Conceitos Básicos.
[size=18]http://www.tiacademicoweb.xpg.com.br/[/size]

olá meu brother gemeosguimaraes, blz? muito obrigado por responder! mais me diga como eu passo o parametro veja se é assim:

HashMap parametros = new HashMap();
parametros.put(" “,” ");
o que é que eu coloco onde esta entre parentese
e onde eu passo esse parametro? no botão que vai imprimir ou no empty file criado para chamar o relatorio? aguardo respostas!

HashMap<Object, Object> map = new HashMap<Object, Object>();

				map.put("idvenda", venda.getIdVenda());//entre aspas coloque o nome do parâmetro definido no ireport, depois o valor do parâmetro 
									
				tela.mensagem("Aguarde, isso pode levar alguns minutos, gerando relatório...", "Mensagem", JOptionPane.WARNING_MESSAGE);
				// comando para criar relatórios
				JasperPrint impressao = JasperFillManager.fillReport(new File("").getAbsolutePath().toString()+"\\ireport \\vendas.jasper",map,Conexao.getConexao());  

				// visualiza o relatório
				JasperViewer viewer = new JasperViewer(impressao, false);

[code]
//Conexao
private static final String driver = “sun.jdbc.odbc.JdbcOdbcDriver”;
private static final String url = “jdbc:odbc:teste” ;
private static final String login ="" ;
private static final String pwd ="" ;
private Connection con;//Conexao
private Statement statement;//Retorna valores da pesquisa

//Gerar relatorio

	// gerando o jasper design
	JasperDesign desenho = JRXmlLoader.load(layout);

	// compila o relatório
	JasperReport relatorio = JasperCompileManager.compileReport(desenho);

	// estabelece conexão
	Class.forName(driver);
	con = DriverManager.getConnection(url, login, pwd);
	Statement stm = con.createStatement();

            Map parametros = new HashMap();
            parametros.put("seuparametro",seuparametro);
            parametros.put("seuparametro",seuparametro);

            String query = "seu SQL"'";

	rs = stm.executeQuery(query);//ResultSet

	// implementação da interface JRDataSource para DataSource ResultSet
	JRResultSetDataSource jrRS = new JRResultSetDataSource(rs);

	// executa o relatório


	JasperPrint impressao = JasperFillManager.fillReport(relatorio,
			parametros, jrRS);

	// exibe o resultado
	JasperViewer viewer = new JasperViewer(impressao, false);
	con.close();
	viewer.show();[/code]

olá gemeosguimaraes blz?
olhe esse codigo que vc me passou parece que quer fucionar.
só que eu não consigo colocar o valor do parametro
quando eu executo o relatorio ele da a menssagem
que o documento não tem paginas!
qual é o valor que tenho q colocar?

olhe eu coloquei aqui meu code:
sendo que quando eu executo ele
ele chama todas as vendas. so quero chama
a venda que eu estou vendendo na hora!
da uma olhada e me diz onde eu coloco o parametro.

package relatorios;

import java.sql.Connection;
import java.util.;
import java.util.HashMap;
import javax.swing.
;
import net.sf.jasperreports.engine.JRResultSetDataSource;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.view.JasperViewer;

import utilitarios.conexao;

public class notafiscal {

conexao con = new conexao();

private Connection jrRS;

{

try
{

con.conecta();
//con.executeSQL(“SELECT * from saidapai,saidafilha,cliente where codigof like '”+"%3’");
con.executeSQL(“SELECT * from saidapai,saidafilha,cliente”);
JRResultSetDataSource jrRS = new JRResultSetDataSource(con.resultset);

JasperPrint jasperPrint = JasperFillManager.fillReport(
“C:/estoque/src/relatorios/notafiscal.jasper”, new HashMap(), jrRS);

JasperViewer.viewReport(jasperPrint, false); // fechar so o relatorio
} catch (Exception erro){
JOptionPane.showMessageDialog(null,“deu erro =”+erro);
}
}

public static void main (String args[])
{
new notafiscal();
}

}

hê tem alguém ai que pode me responder!!!

olá pessoal alguém me ajude esse code que eu coloquei ja fuciona. mais eu quero que ele me mostre so o que eu chamar na tela. onde é que eu faço isso ? no botão, no proprio relatorio? alguma luz por favor qual é o codigo.
os codigos que os colegas me mandaram ainda ñ fucionaram. la no ireport ele ta fuciona muito bem com o filtro, mais no jasper não ta rolando ainda.agradeço a todos

Vamos las!

Esse é um código para gerar o relatório

try{
            Connection con = bd.getConnection();//Conexão com o banco

            HashMap parametros = new HashMap();//Crio os parametros

            parametros.put("USER", "julio");//aqui eu coloco dentro do parametro chamado USER o nome 'julio'

            JasperPrint jp = JasperFillManager.fillReport("./jasper/relatorio_final.jasper", parametros, con);//Crio o JasperPrint com o endereço do relatório, o parametro e a conexão.

            JasperViewer jrv = new JasperViewer(jp,false);//Crio o JasperViewer com o JasperPrint dentro.

            jrv.setVisible(true);Chamo o relatório

        }catch(Exception e){
            e.printStackTrace();
        }

Dai você me pergunta. Cadê a consulta ao banco?

Não sei se você aprendeu ou sabe disso mas dentro do próprio iRport tem um local onde vc faz a pesquisa, é muito mais simples e viável de se fazer.

Exemplo:

Dentro do iReport eu coloco a seguinte pesquisa:

SELECT * FROM usuario

Ele vai me retorna tudo da tabela usuário.

Mas se eu quero só de determinado usado, porém eu não sei que usuário é esse, vai ser conforme quem estiver usando o sistema escoler para aparecer no relatório.

É ae que você usa o parametro.

Supondo que minha pesquisa seja essa agora

SELECT * FROM usuario WHERE nome = $P{USER} //consulta feita dentro do iReport

Agora, olhando o meu código la em cima de gerar o relatório, vamo enteder que no parametro USER eu tenho o nome julio.

ou seja , vai ficar assim.

SELECT * FROM usuario WHERE nome = julio

Espero ter sido claro.

Dica: Tem umas video aula de relatório da empresa T2Ti, procura na net ae, é super completo e vc vai entender tudo sobre relatório, desde simples até com código de barras.

olá juliocesarss tudo blz ? muito obrigado por responder assim como os outros q responderam também valeu mesmo!!!
mas o que acontece é o seguinte:
ta tudo fucionando de boa isso q vc falou de fazer no ireport eu sei como fazer la no ireport o relatorio fuciona na boa com filtro e tudo mais!
so que que la quando eu gero ele no netbeans ele chama tudo que tem no banco. eu so quero o que estiver aparecendo na tela.
olhe eu coloquei esse codigo q vc me mandou pra gerar o relatorio e nessa linha que da um erro:
JasperPrint jp = JasperFillManager.fillReport( “C:/estoque/src/relatorios/notafiscal.jasper”,parametros,conexao); como é que eu faço agora?

ha outra coisa essa minha conexão com o banco ele fuciona! eu só não to sabendo chama o relatorio filtrado é so isso q eu quero. valeu!!!

Ola Caio…

tente filtrar no select dentro do java olhe este exemplo… talves possa ajudar funciona beleza…

[color=red]public void gerarRelatorioFormmaq(){
try {
//throws JRException, Exception
/* Chama o método getConnection para obter um objeto Connection,
utiliza-o para obter um objeto Statement e realiza uma consulta
armazendo o resultado em um ResultSet
*/

Connection connection = getConnection();
String sql = “SELECT * FROM TABMAQUINA order by codigo_maq asc”;
//String sql = “SELECT * FROM TABCORES WHERE CODIGO_COR = ?”;
PreparedStatement statement = connection.prepareStatement(sql);
//statement.setString(1, valor);
ResultSet result = statement.executeQuery();

/* Cria um JRResultSetDataSource com o resultado da consulta */
JRResultSetDataSource jrrs = new JRResultSetDataSource(result);

// Cria um arquivo .jrprint (relatório preenchido) utilizando o
JasperPrint jp = JasperFillManager.fillReport(“C:/Arquivos de Programas/Flasystem/src/flasystem/relatorios/Relatmaquinas.jasper”,null,jrrs); //jrrs);
/* Exibe o relatório */
JasperViewer.viewReport(jp,false);//este false no final é muito importante
//se ele nao for colocado cada vez que o relatorio
//for fechar a aplicação fecha junto com ele.
}
catch (Exception e){
MensagemGeral.exibirMensagem(e.getMessage()+“Erro ao gerar relatorio,\n informe o ( Numero ) deste erro ao e-mail exibido para obter suporte técnico \n”, “0010 Erro ao gerar relatorio…”, true);
}
}
[/color]

olha eu consigo chama o relatorio assim:
porém ele não esta filtrando nada!
ele vem com tudo que tem no banco> da uma olhada!

CODE:

try{ conexao con = new conexao();
con.conecta();

       con.executeSQL("SELECT * from saidapai,saidafilha,cliente");  
       JRResultSetDataSource jrRS = new JRResultSetDataSource(con.resultset); 
        HashMap parametros = new HashMap();//Crio os parametros   

        parametros.put("codigo", "codigo");//aqui eu coloco dentro do parametro chamado USER o nome 'julio'   

        //JasperPrint jp = JasperFillManager.fillReport("C:/estoque/src/relatorios/notafiscal.jasper", parametros,conexao);//Crio o JasperPrint com o endereço do relatório, o parametro e a conexão.   
 JasperPrint jp = JasperFillManager.fillReport( "C:/estoque/src/relatorios/notafiscal.jasper",new HashMap(), jrRS);//parametros,conexao);
        JasperViewer jrv = new JasperViewer(jp,false);//Crio o JasperViewer com o JasperPrint dentro.   

        jrv.setVisible(true);//Chamo o relatório   

    }catch(Exception e){   
        e.printStackTrace();   
    }

Caio ficou meio embolado aqui vai mais facil de entender

[color=red]public void gerarRelatorioFormmaq(){
try {

Connection connection = getConnection();
String sql = “SELECT * FROM TABMAQUINA order by codigo_maq asc”;
PreparedStatement statement = connection.prepareStatement(sql);
ResultSet result = statement.executeQuery();
JRResultSetDataSource jrrs = new JRResultSetDataSource(result);
JasperPrint jp = JasperFillManager.fillReport(“C:/Arquivos de Programas/Flasystem/src/flasystem/relatorios/Relatmaquinas.jasper”,null,jrrs); //jrrs);

/* Exibe o relatório */
JasperViewer.viewReport(jp,false);//este false no final é muito importante
//se ele nao for colocado cada vez que o relatorio
//for fechar a aplicação fecha junto com ele.
}
catch (Exception e){
MensagemGeral.exibirMensagem(e.getMessage()+“Erro ao gerar relatorio,\n informe o ( Numero ) deste erro ao e-mail exibido para obter suporte técnico \n”, “0010 Erro ao gerar relatorio…”, true);
}
}
[/color]
estou usando desta forma dentro da minha classe Relatorio ;;;;;;;;;;;;funciona perfeitamente;;;;;;;;;;;;;;;;;;;

valeu meu brother gabrielz12
vou da uma olhada aqui! um abraço!!

olá pessoal eu conseguir filtrar pelo jasper no netbeans,
mais só se eu colocar um valor e eu não quero assim quero q ele imprima o q ta na tela. olhem como eu fiz:

CODE:
try
{ conexao con = new conexao();
con.conecta();
con.executeSQL(“SELECT * from saidapai,saidafilha,cliente where codigof like '”+“3’”); //codigof é o codigo da nota e o três é o valor do codigof

//con.executeSQL(“SELECT * from saidapai,saidafilha,cliente order by saidapai.codigonf”);
JRResultSetDataSource jrRS = new JRResultSetDataSource(con.resultset);
JasperPrint jasperPrint = JasperFillManager.fillReport(
“C:/estoque/src/relatorios/notafiscal.jasper”, new HashMap(), jrRS);
HashMap<Object, Object> map = new HashMap<Object, Object>();
map.put(“codigo”, “codigo”);

JasperViewer.viewReport(jasperPrint, false);
} catch (Exception erro){
JOptionPane.showMessageDialog(null,“deu erro =”+erro);
}

//public static void main (String args[])
//{
//new relatorio();

}  

aqui é a minha consulta la no ireports:

select * from cliente,saidafilha,saidapai
WHERE
saidafilha.codigof = $P!{codigo}
order by saidafilha.codigof

vejam ai onde é que eu estou errando por favor

1 curtida

RESOLVIDO A PARA!!!
OBRIGADO A TODOS DO FORUM POR TENTAREM ME AJUDA
ESTOU AQUI PRA AJUDA COMO EU PODER TAMBÉM.

O Q EU FIZ FOI O SEGUINTE PRA QUEM ESTIVER COM O MESMO PROBLEMA!!
LEMBRA DO MEU CODIGO Q COLOQUEI AQUI? ENTÃO,
EU SÓ MUDEI UMA LINHA

CODE:
try{ conexao con = new conexao();

con.conecta();
[color=red]con.executeSQL("SELECT * FROM saidapai,saidafilha,cliente WHERE codigof = " + tfcodigo.getText()); [/color]// APENAS COLOQUEI ISSO: + tfcodigo.getText());
JRResultSetDataSource jrRS = new JRResultSetDataSource(con.resultset);
JasperPrint jasperPrint = JasperFillManager.fillReport(
“C:/estoque/src/relatorios/notafiscal.jasper”, new HashMap(), jrRS);
JasperViewer.viewReport(jasperPrint, false);
} catch (Exception erro){
JOptionPane.showMessageDialog(null,“deu erro =”+erro);
}

EU SABIA Q ERA UMA COISA BOBA FUI MEXENDO E MEXENDO E CHEGUEI ONDE QUERIA AGORA ELE APARECE NO RELATORIO SO O Q ESTA NA TELA!

VALEU A TODOS! TAMOS AI

1 curtida