seguinte, eu tenho um relatorio onde mando alguns campos, ja consigo fazer isso blzinha usando parameters, porem agora quero pegar os dados de uma jtable que tem varias linhas e ir mandando para o relatorio.
to tentando assim.
try {
String arquivo = "relatorios/Comanda.jasper";
java.io.InputStream file = getClass().getClassLoader().getResourceAsStream(arquivo);
Map parametros = new HashMap();
for(int x = 0; x < tabelaConsumo.getRowCount(); x++){
parametros.put("produto", tabelaConsumo.getModel().getValueAt(x, 1));
}
JasperPrint printer = JasperFillManager.fillReport(file, parametros, new JREmptyDataSource());
JRViewer view = new JRViewer(printer);
JDialog dialog = new JDialog();
dialog.getContentPane().add(view);
new AbreRelatorios().abreRelatorio(dialog);
} catch (JRException ex) {
Logger.getLogger(FechamentoDeConta.class.getName()).log(Level.SEVERE, null, ex);
}
dessa maneira q estou fazendo ai, ele passa pelo for e pega apenas o ultimo valor, como eu faço para mandar todos os valores do for ??? Pensei em fazer assim.
for(int x = 0; x < tabelaConsumo.getRowCount(); x++){
parametros.put("produto", tabelaConsumo.getModel().getValueAt(x, 1));
JasperPrint printer = JasperFillManager.fillReport(file, parametros, new JREmptyDataSource());
}
JRViewer view = new JRViewer(printer);
porem dessa maneira eu perco a referencia a variavel printer que instancia JasperPrint, como eu faço para naum perder essa referencia ???
Alguma dica de como fazer isso ??? qual seria a melhor maneira ?
bom Galera, como ninguém respondeu e eu consegui fazer o esquema, quero postar aqui como fazer pois procurei muito para chegar ao sucesso…entaum, la vai.
//passando valores para um relatorio ireport sem conexao no banco e pegando valores da jtable
//metodo chamado em um jbutton
public void abrirComanda() throws JRException{
String arquivo = "Relatorios/EmitirComanda.jasper"; //arquivo de relatorio
java.io.InputStream file = getClass().getClassLoader().getResourceAsStream(arquivo); //carrego o arquivo
JRTableModelDataSource tabela = new JRTableModelDataSource(tabelaConsumo.getModel()); //aqui eu crio um datasource usando a propria jtable
Map parametros = new HashMap(); //apenas crio um map, mas nem passo parametro nem nada, os parametros sao as colunas da jtable
JasperPrint printer = JasperFillManager.fillReport(file, parametros, tabela); //aqui eu passo a jtable(tabela) para o relatorio
JRViewer view = new JRViewer(printer); //preview
JDialog dialog = new JDialog(); //jdialog que contem o preview
dialog.getContentPane().add(view); //adiciono o preview
dialog.setSize(800,600);
dialog.setLocationRelativeTo(this);
dialog.setModalityType(ModalityType.APPLICATION_MODAL);
dialog.setModal(true);
dialog.setVisible(true);
}
public void botaoActionPerformed(){
abrirComanda(); //chama o metodo
}
Agora é só ir até o model do relatório no meu caso é “EmitirComanda.jrxml” e criar os “fields” com o nome de COLUMN_0, COLUMN_1 etc…etc…Cada field ira receber os dados da jtable recebida conforme sua coluna.
No modelo EmitirComanda.jrxml va ate suas propriedades e mude a opcao: “When No Data” para “No Data Section”, isso dira para seu .jrxml q ele naum ira receber uma conexao SQL…depois desses passos, basta compilar o relatorio e a aplicacao e rodar para ver a magia acontecer.
Este foi o melhor post que encontrei para desenvolver um relatório no IReport sem conxão com o banco, só utilizando os dados de um jTbale. Fiz exatamente como está neste pos, porém está apresentando o seguinte erro:
Exception occurred during event dispatching:
java.lang.NullPointerException
at java.io.ObjectInputStream$PeekInputStream.read(ObjectInputStream.java:2264)
at java.io.ObjectInputStream$PeekInputStream.readFully(ObjectInputStream.java:2277)
at java.io.ObjectInputStream$BlockDataInputStream.readShort(ObjectInputStream.java:2748)
at java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:780)
at java.io.ObjectInputStream.<init>(ObjectInputStream.java:280)
at net.sf.jasperreports.engine.util.ContextClassLoaderObjectInputStream.<init>(ContextClassLoaderObjectInputStream.java:53)
at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:214)
at net.sf.jasperreports.engine.JasperFillManager.fill(JasperFillManager.java:632)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:956)
at Janelas.JEntrada.imprimeRelatorio(JEntrada.java:48)
at Janelas.JEntrada.jButton1ActionPerformed(JEntrada.java:245)
at Janelas.JEntrada.access$200(JEntrada.java:29)
at Janelas.JEntrada$4.actionPerformed(JEntrada.java:125)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.Component.processMouseEvent(Component.java:6038)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3260)
at java.awt.Component.processEvent(Component.java:5803)
at java.awt.Container.processEvent(Container.java:2058)
at java.awt.Component.dispatchEventImpl(Component.java:4410)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
at java.awt.Container.dispatchEventImpl(Container.java:2102)
at java.awt.Window.dispatchEventImpl(Window.java:2429)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:177)
at java.awt.Dialog$1.run(Dialog.java:1039)
at java.awt.Dialog$3.run(Dialog.java:1091)
at java.security.AccessController.doPrivileged(Native Method)
at java.awt.Dialog.show(Dialog.java:1089)
at java.awt.Component.show(Component.java:1419)
at java.awt.Component.setVisible(Component.java:1372)
at java.awt.Window.setVisible(Window.java:801)
at java.awt.Dialog.setVisible(Dialog.java:979)
at Janelas.JanelaPrincipal.jMenuItem1ActionPerformed(JanelaPrincipal.java:95)
at Janelas.JanelaPrincipal.access$000(JanelaPrincipal.java:11)
at Janelas.JanelaPrincipal$1.actionPerformed(JanelaPrincipal.java:49)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.AbstractButton.doClick(AbstractButton.java:357)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1170)
at javax.swing.plaf.basic.BasicPopupMenuUI$Actions.doReturn(BasicPopupMenuUI.java:438)
at javax.swing.plaf.basic.BasicPopupMenuUI$Actions.actionPerformed(BasicPopupMenuUI.java:412)
at javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1636)
at javax.swing.JComponent.processKeyBinding(JComponent.java:2844)
at javax.swing.KeyboardManager.fireBinding(KeyboardManager.java:267)
at javax.swing.KeyboardManager.fireKeyboardAction(KeyboardManager.java:216)
at javax.swing.JComponent.processKeyBindingsForAllComponents(JComponent.java:2921)
at javax.swing.JComponent.processKeyBindings(JComponent.java:2913)
at javax.swing.JComponent.processKeyEvent(JComponent.java:2807)
at java.awt.Component.processEvent(Component.java:5815)
at java.awt.Container.processEvent(Container.java:2058)
at java.awt.Component.dispatchEventImpl(Component.java:4410)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1848)
at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:693)
at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:958)
at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:830)
at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:657)
at java.awt.Component.dispatchEventImpl(Component.java:4282)
at java.awt.Container.dispatchEventImpl(Container.java:2116)
at java.awt.Window.dispatchEventImpl(Window.java:2429)
at java.awt.Component.dispatchEvent(Component.java:4240)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
Alguem sabe o que pode esta ocorrendo!?
Desde já agradeço!
[quote=Kurio]Este foi o melhor post que encontrei para desenvolver um relatório no IReport sem conxão com o banco, só utilizando os dados de um jTbale. Fiz exatamente como está neste pos, porém está apresentando o seguinte erro:
Exception occurred during event dispatching:
java.lang.NullPointerException
at java.io.ObjectInputStream$PeekInputStream.read(ObjectInputStream.java:2264)
Alguem sabe o que pode esta ocorrendo!?
Desde já agradeço![/quote]
Olá. O que acontece é que você não encontrar o arquivo com a extensão .jasper. Desculpem-me por não auréola Português. Este foi traduzida com Google Translate.
Originalmente, o caminho do arquivo no exemplo foi:
String arquivo = “relatorios/Comanda.jasper”;
Saudações