Opa 
Criei meu relatório utilizando o iReport, porém tenho uma dúvida: existe uma coluna no relatório que deverá ser dinâmica ( uma coluna de siglas de produtos ) e ela deverá exibir as colunas de acordo com a quantidade de siglas que forem retornadas.
Alguém já fez algo parecido e pode me dar uma ajuda?
[]'s
Olá Amigo… de um exemplo pq está difícil de entender seu problema
abcs
Vamos supor que vc tem a tabela PRODUTOS. Os produtos são agrupados de acordo com uma Sigla…
Ex.:
-Arroz, Feijão, Milho: Sigla - GR
-Cerveja, Vinho, Vodca - BA
Essas Siglas variam de acordo com os produtos registrados…não tem mto como eu saber a quantidade de siglas que irão ter então eu preciso fazer um esquema que as colunas do relatório se ajustem automaticamente…no relatorio eu exibo assim:
codigo do funcionario - nome do funcionario - siglas dos produtos que cadastrou - quantidade.
Entendeu?
O Bean do meu relatório, eu montei da seguinte maneira:
public class RelatorioBean {
private String funcionarioCodigo;
private StringfuncionarioNome;
private List<String> siglas = new ArrayList<String>();
private Map<String, Integer> quantidadeEntradasInterno = new HashMap<String, Integer>();
private Integer quantidadeOrigemInterna;
private Integer quantidadeOrigemExterna;
private Integer totalEntradas;
// gets e sets
}
Eu consigo preencher o Bean, mas não sei como jogar a List ‘Siglas’ num esquema de colunas dinâmicas…nem sei se isso é possível rs
Unnn agora entendi. Colunas diñâmicas é osso ein! Eu estava atrás disso pra fazer uma lista de chamada de alunos de acordo com o número de aulas e não achei nada sobre.
De qualquer modo, não é legal vc fazer isso, pq tem a limitação do tamanho da folha. Se tiver muita sigla vai acabar dando merda. Lei de Murphi heeeheh
Bom, eu sinceramente desconhço uma solução. Se vc souber de alguma, posta ai o resultado pra gente descobrir junto.
Abraços t+
Aaa uma alternativa, a mais simples pra vc, é jogar a sua lista em uma String, as siglas separadas por ‘,’ em uma coluna da tabela.
Acho q é o jeito mais sussa de resolver
Abraços
[quote=arec_metafora]Aaa uma alternativa, a mais simples pra vc, é jogar a sua lista em uma String, as siglas separadas por ‘,’ em uma coluna da tabela.
Acho q é o jeito mais sussa de resolver
Abraços[/quote]
Como que eu faço isso? ( Essa parece ser boa hehe )
Eu me refiro a parte do jasper, como que fica o campo pra ele saber que estão separados por vírgula? E a Lista inteira eu jogo em uma ‘Stringona’?
Bem simples… declara a coluna como tipo String e passa ela no bean.
String siglasStr = "";
for(String sigla : siglas)
siglasStr += sigla + ",";
// Pense numa maneira de tirar essa última virgula expúria
if( !siglasStr.isEmpty() )
siglasStr = siglasStr.substring(0,siglasStr.lenght()-1);
Mas como que vou setar o valor da quantidade de objetos de cada String no Jasper?
Não entendi! :roll:
Tipo, vamos tentar entender melhor… No relatório vc terá, por exemplo, nome do cliente e siglas…
Nome do cliente…| Siglas
Augusto…| GL, PG, AR, ET
Felipe …| GL, PG
Apenas isso… não precisa do tamanho… é claro q entra naquele problema do tamanho não caber na linha, mas o Ireport ajuda pra vc e dá quebra de linha…
Nome do cliente…| Siglas
Augusto …| GL, PG, AR, ET,AG
…| TO, HY
Felipe …| GL, PG
E por aí vai…
É assim? Se o seu problema se resumir a isso, tá terminado…
Passa um atributo do tipo String no seu bean, executa o código que eu lhe falei antes de chamar o relatório pra preencher a string, e passa ela na coluna siglas…
Bom, se seu problema não é esse, então eu estou me confundindo… hehe
Abraços
Não é só isso rsrs
Embaixo de cada Sigla, eu preciso setar a quantidade ( isso eu faço passando um Map copm o valor da Sigla e a quantidade ).
No jasper tem como eu pegar o valor de um objeto em alguma posicao de uma lista?
Tem sim! Embora eu nunca usei isso, acredito que seja da mesma maneira que você utilizaria normalmente…
lista.get(4); // Para 5° elemento da lista
O ideal é que naquela lista que gera com as siglas separadas por vírgulas, vc concatenasse também a quantidade…
Ficaria assim:
Nome do cliente…| Siglas e Qde
Augusto…| GL (2) , PG (5) , AR (9), ET(8)
Tenta ai e ve o resultado…
Abraços
$F{siglas.get(0)}
Não funcionou. Recebi o seguinte erro:
Você incluiu a bean no classpath do ireport?
Parece que ele não está reconhecento o tipo do atributo siglas…
tenta fazer um printn com siglas.class para ver o que ele gera…
mas vc pensou no caso de gerar a lista fora do ireport? separando por vírgulas e colocando a qnde entre parânteses? parece ser a melhor forma…
Sua idéia é boa…eu to utilizando ela…só to levando pau pra não deixar escrever de novo se já existir o valor e atualizar a contagem dela 
[]'s
Ok! Boa Sorte… se precisar estamos aí
Abraços t+