java.lang.StringIndexOutOfBoundsException: begin 3, end 6, length 4
5 respostas
S
silviogs
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.
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.
Como eu uso o parâmetro $P!{PAR_SQL} para passar a query abaixo:
iquery.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