JasperReport + Scriptlet

9 respostas
J

Estou passando como parâmetro para o relatório um JRResultSetDataSource, que contém apenas um registro.
Estou querendo fazer um Scriptlet para duplicar esse registro, antes que o jasper começe a imprimir !! Dessa maneira, ao inves de imprimir apenas um registro, ele vai imprimir dois registrso identicos !! Tem como fazer isso usando esse tal de Scriptlet ??

valeu !!!

9 Respostas

J

Resumidamente, eu estou tentando impimir várias vezes o único valor que está no resultset

alguem ajuda ??

valeu !!

brlima

pq ano tenta fazer isso dentro do seu dataSource ? Basta nao incrementar no método next , ou incrementar a cada 10 passadas…rsss… ai ele repete 10 vezes o mesmo cara…

J

Exitem outras classes usando esse mesmo DataSource!!! Por isso, não posso alterar o DataSource !!!

brlima

bota um parametro la tipo: numeroDeRepeticoes…rsss

ps: crianças, nunca façam isso em casa!

J

brlima:
bota um parametro la tipo: numeroDeRepeticoes…rsss

ps: crianças, nunca façam isso em casa!

Eu vou herdar de JRResultSetDataSource e sobrescrever o método next(). Vou apenas retirar a linha desse método onde ele faz resultSet.next() e vou deixar todo o resto da classe do mesmo jeito !!! Vamo ver no q vai dá !!! :smiley:

valeu cara !!

brlima

Vai entrar em looping de vc não parar ele uma hora! Cuidado hein!..rsss. nao tira o next(). Coloca um contador pra dar next()…

J

Blz … To ligado nisso , me expressei mal no post passado !!!

valeu !!

J

Meu ResultSet só possui uma linha. Eu herdei de JRResultSetDataSource e sobrescrevi o método next(). Deu certo !!! Ficou com um cara de gambiarra mas tudo bem !!!:smiley:
brlima, tem como melhorar esse meu código ai ?? Eu apenas criei a variavel cont e adicionei mais dois if !!! valeu pela ajuda cara !!!

private int cont = 0;
 public boolean next() throws JRException
    {
        boolean hasNext = true;
      
        if (resultSet != null)
        {

            try
		{
			if (cont ==0)
			{
				  hasNext = resultSet.next();
			}
			if (cont == 14){
				  hasNext = resultSet.next();
				   return hasNext;
			}
			cont++;
		}
            catch (SQLException e)
            {
                throw new JRException("Unable to get next record.", e);
            }
        }

        return hasNext;
    }
brlima

Bem, pra mim ta bom, mas eu faria assim: ( ps: nao testei! )

private int repeticoes = 1;
  private int registrosLidos = 0;
  public boolean next() throws JRException
     {
         boolean hasNext = true;
       
         if (resultSet != null)
         {
 
             try
 		{

                     if( registrosLidos%repeticoes == 0 ){
                         hasNext = resultSet.next();
                     } 
                     registrosLidos++;

 		}
             catch (SQLException e)
             {
                 throw new JRException("Unable to get next record.", e);
             }
         }
 
         return hasNext;
     }
Criado 4 de maio de 2005
Ultima resposta 4 de mai. de 2005
Respostas 9
Participantes 2