GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

IREPORT - Como unificar um Fields e uma unica linha, porem em várias colunas

Tags: #<Tag:0x00007f00cb3bc4a0> #<Tag:0x00007f00cb3bc108>

Olá Pessoal!

Preciso gerar um relatório pelo Ireport, onde existe várias disciplinas e suas seguintes notas em 4º Bimestres diferentes. Consegui gerar o relatório, porem o mesmo printa da seguinte forma:

| Disciplina | 1º | 2º | 3º | 4º |

| Biologia | S | | | |
| Biologia | | A | | |
| Biologia | | | A | |
| Biologia | | | | B |

Gostaria que o mesmo retornasse as notas em uma unica linha para cada disciplina, como segue abaixo:

| Disciplina | 1º | 2º | 3º | 4º |

| Biologia | S | A | A | B |
| História | A | A | C | A |
| Química | B | S | A | A |
| Biologia | B | A | C | B |

Alguém poderia me ajudar, por favor?

Vocẽ vai pegar um textField e, ao invés de deixar a expressão do mesmo apenas a padrão

$F{nota1}

Você vai concatenar todas as que quer:

$F{nota1}  |  $F{nota2}  |  $F{nota3}  |  $F{nota4}

E não vai incluir os demais textfields no detail

Olá Darlan!
Tentei aqui, mas não tive sucesso. Continua da mesma forma, mas acredito que estou usando uma Variables que criei de maneira errada. Para cada $F{período} existe uma $F{nota_conceito}, portando criei uma variável $V{nota_primeiro_bimestre} desta forma:

IF($F{período}.contains(“1”),$F{nota_conceito},CLEAN(" "))

Criei uma variável para os 4 bimestre só alterando o contains de (“1”) para (“2”), (“3”) em diante e coloquei todas elas em um único textField desta forma:

$F{Disciplina}+$V{nota_primeiro_bimestre}+$V{nota_Segundo_bimestre}+$V{nota_Terceiro_bimestre}+$V{nota_Quarto_bimestre}

Cose seja aqui o problema, como devo realizar o IF de maneira correta?

Desde já agradeço.

Sem código, sem possibilidade de saber.
Porém, eu prefiro a abordagem de obter os dados pelo java e enviar via jrbeancollectiondatasource.
O bean, no caso, teria o nome da disciplina e as notas de cada bimestre.

public class Rendimento {
    private String disciplina;
    private Float primeiroBimestre;
    private Float segundoBimestre;
    private Float terceiroBimestre;
    private Float quartoBimestre;
}

Aí sim, você faz o textfield como sugeri

1 Curtida

Desculpe a minha dificuldade, segue abaixo o código gerado pelo próprio Jaspersoft Studio:

field name="notaConceito_sigla" class="java.lang.String"/>
field name="Periodo_Bimestre" class="java.lang.String"/>

variable name="nota_primeiro_bimestre" class="java.lang.String">
variableExpression>![CDATA[IF($F{Periodo_Bimestre}.contains("1"),$F{notaConceito_sigla},CLEAN(" "))]]>/variableExpression>
	/variable>
	variable name="nota_Segundo_bimestre" class="java.lang.String">
		variableExpression>![CDATA[IF($F{Periodo_Bimestre}.contains("2"),$F{notaConceito_sigla},CLEAN(" "))]]>/variableExpression>
	/variable>
	variable name="nota_Terceiro_bimestre" class="java.lang.String">
		variableExpression>![CDATA[IF($F{Periodo_Bimestre}.contains("3"),$F{notaConceito_sigla},CLEAN(" "))]]>/variableExpression>
	/variable>
	variable name="nota_Quarto_bimestre" class="java.lang.String">
		variableExpression>![CDATA[IF($F{Periodo_Bimestre}.contains("4"),$F{notaConceito_sigla},CLEAN(" "))]]>/variableExpression>
	/variable>