Olá amigos
estou com um prolema no substring apresenta este erro:
SEVERE: Servlet.service() for servlet [dispatcher] in context with path [/rh] threw exception [Request processing failed; nested exception is net.sf.jasperreports.engine.fill.JRExpressionEvalException: Error evaluating expression for source text: $F{matricula}.substring(0,3)+’.’+$F{matricula}.substring(3,6)+’-’+$F{matricula}.substring(6)] with root cause
java.lang.StringIndexOutOfBoundsException: begin 3, end 6, length 4
No ireport funciona normalmente mas quando executo o relatório pela aplicação dá erro.
Alguém poderia ajudar?
Muito obrigado
Sua String
só possui 4
caracteres mas você está tentando fazer um substring
das posições 3
à 6
.
Olá staroski
minha string tem 7 posições 1432321 preciso exibir no relatório assim: 143.232-1
No ireport mostra normalmente mas quando eu executo pela aplicação java da erro:
Muito obrigado
Não é com o valor 1432321
que está acontecendo a exceção, é algum outro.
Exibe em algum lugar o valor do $F{matricula}
para descobrir qual é o conteúdo que está errado.
Olá staroski
no banco de dados está armazenado 1432321 para matriculas acima de 100000 mil mas as matriculas abaixo disso estão assim 0002826 com zeros a esquerda, quando eu executo o relatório pela aplicação é suprimido os zeros a esquerda por isso acontece o erro de tamanho do string.
Muito obrigado
Bloco de Citação
1 curtida
Olá amigos
consegui fazendo assim:
$F{matricula}.length() == 7?
$F{matricula}.substring(0,3)+’.’+$F{matricula}.substring(3,6)+’-’+$F{matricula}.substring(6):
$F{matricula}.length() == 6?
‘0’+$F{matricula}.substring(0,2)+’.’+$F{matricula}.substring(2,5)+’-’+$F{matricula}.substring(5):
$F{matricula}.length() == 5?
‘00’+$F{matricula}.substring(0,1)+’.’+$F{matricula}.substring(1,4)+’-’+$F{matricula}.substring(4):
$F{matricula}.length() == 4?
‘000’+$F{matricula}.substring(0,3)+’-’+$F{matricula}.substring(3):
$F{matricula}
Como eu uso o parâmetro $P!{PAR_SQL} para passar a query abaixo:
i query.append("select ");
query.append("fc.matricula, ");
query.append("fc.nome, ");
query.append("fc.dataadmissao, ");
query.append("fc.datapublicacao, ");
query.append("cg.descricao as cargo, ");
query.append("og.item as orgaoitem, ");
query.append("og.descricao as orgao, ");
query.append("fn.descricao as funcao, ");
query.append("nv.descricao as nivel ");
query.append("from funcionarios fc " );
query.append("inner join cargos cg on cg.id=fc.idcargo ");
query.append("inner join orgaos og on og.id=fc.idorgao ");
query.append("inner join funcoes fn on fn.id=fc.idfuncao ");
query.append("inner join niveis nv on nv.id=fc.idnivel ");
query.append("where fc.excluido=false ");
query.append("order by og.item, fc.nome");
o resultado do campo matricula que vem do BD eh varchar com tamanho 10 mas a matricula soh tem no máximo 7 dígitos
Muito obrigado