Para dar um help pra a galera do futuro que for precisar dessa informação:
Minha tabela: Finanças
Minhas colunas selecionadas: Observação, Grupo, Mês e Ano.
Seguinte: eu fiz isso aqui no iReport (eu tentei fazer uma query normal “select * from tabela”), mas quando eu chamava pelo NetBeans, dava erro, ele queria procurar tudo da tabela.
Então fiz assim:
SELECT observacao, grupo, mes, ano, //Esses parâmetros são os que serão selecionados na tabela
SUM(valor) AS valor FROM financas // Aqui é a soma do meu valor, que "joga" os dados pro valor e depois chama a tabela
GROUP BY observacao, grupo, mes, ano // Aqui acontece o agrupamento
HAVING SUM(valor) > 0 // E aqui é mais pra quem precisa somar valores maiores que "200" por exemplo, é só definir o seu próprio valor onde está o '0'
Ok, com isso feito, eu parti pro Netbeans, criei duas comboBox (mas você pode usar o jTextField normalmente) e um botão.
Meu botão é para o Mês e o Ano.
Ficou assim:
try {
conecta.executaSQL ("SELECT observacao, grupo, mes, ano, SUM(valor) AS valor FROM financas WHERE mes ilike '%"+campomes.getSelectedItem()+"%' and ano ilike '%"+campoano.getSelectedItem()+"%' GROUP BY observacao, grupo, mes, ano HAVING SUM(valor) > 0.001 order by observacao"); //aqui é quase igual a query do iReport, eu só adicionei o "where" pra o usuário selecionar uma data que ele quiser.
JRResultSetDataSource relatResul = new JRResultSetDataSource(conecta.rs);
JasperPrint jpPrint = JasperFillManager.fillReport("C:/Users/abner/JaspersoftWorkspace/MyReports/GastosFixos.jasper", new HashMap(), relatResul);
JasperViewer jv = new JasperViewer(jpPrint,false);
jv.setVisible(true);
jv.toFront();
} catch (JRException e) {
JOptionPane.showMessageDialog(rootPane, "Não há relatórios para esta data!");
}
Se você quiser ficar somente com o mês ou somente o ano, lembre-se que ele irá puxar muitos dados, ou seja, se você escolher Janeiro: o ireport vai puxar janeiro de todos os anos, e se escolher 2017: o ireport vai puxar todos os mesês de 2017.
Para fazer assim, basta excluir o “and”, ficará assim:
try {
conecta.executaSQL ("SELECT observacao, grupo, mes, ano, SUM(valor) AS valor FROM financas WHERE mes ilike '%"+campomes.getSelectedItem()+"%' GROUP BY observacao, grupo, mes, ano HAVING SUM(valor) > 0.001 order by observacao"); //aqui é quase igual a query do iReport, eu só adicionei o "where" pra o usuário selecionar uma data que ele quiser.
JRResultSetDataSource relatResul = new JRResultSetDataSource(conecta.rs);
JasperPrint jpPrint = JasperFillManager.fillReport("C:/Users/abner/JaspersoftWorkspace/MyReports/GastosFixos.jasper", new HashMap(), relatResul);
JasperViewer jv = new JasperViewer(jpPrint,false);
jv.setVisible(true);
jv.toFront();
} catch (JRException e) {
JOptionPane.showMessageDialog(rootPane, "Não há relatórios para esta data!");
}


Se você for no airsoft 60 vezes em um mês só vai aparecer uma vez, e só aparecerá de novo no próximo mês! Flw rapazeada! (e de nada) ) 