(Resolvido)Erro de conversão

Bom dia pessoal.

Estou com a seguinte situação:

Tenho um relatório feito com JasperStudio, e preciso criar uma variável que faça a soma de uma coluna inteira.

Então fui criar a variável da seguinte forma:

Botão direito em Variables e botão esquerdo em Create Variable, resultado foi a criação da variável Variable_1:

botão direito em Variable_1 e botão esquerdo em Show Properties:

Abre-se então a janela de propriedades:

Altero o nome da variável no campo name, no campo calculation altero para sum, em Value Class Name altero para Double, no campo Expression marco a coluna que será somada…ficando desta maneira:

Arrasto a variável criada para o lugar onde quero que ela apareça no relatório:

agora vou clicar em Preview para ver o resultado obtido:

da este erro

net.sf.jasperreports.engine.JRException: java.lang.ClassCastException: class java.lang.String cannot be cast to class java.lang.Number (java.lang.String and java.lang.Number are in module java.base of loader 'bootstrap')
	at com.jaspersoft.studio.editor.preview.view.control.ReportController.fillReport(ReportController.java:551)
	at com.jaspersoft.studio.editor.preview.view.control.ReportController.access$18(ReportController.java:526)
	at com.jaspersoft.studio.editor.preview.view.control.ReportController$1.run(ReportController.java:444)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
Caused by: java.lang.ClassCastException: class java.lang.String cannot be cast to class java.lang.Number (java.lang.String and java.lang.Number are in module java.base of loader 'bootstrap')
	at net.sf.jasperreports.engine.fill.JRDoubleSumIncrementer.increment(JRDoubleIncrementerFactory.java:294)
	at net.sf.jasperreports.engine.fill.JRAbstractExtendedIncrementer.increment(JRAbstractExtendedIncrementer.java:42)
	at net.sf.jasperreports.engine.fill.JRCalculator.estimateVariables(JRCalculator.java:251)
	at net.sf.jasperreports.engine.fill.JRFillDataset.next(JRFillDataset.java:1410)
	at net.sf.jasperreports.engine.fill.JRFillDataset.next(JRFillDataset.java:1384)
	at net.sf.jasperreports.engine.fill.JRBaseFiller.next(JRBaseFiller.java:1201)
	at net.sf.jasperreports.engine.fill.JRVerticalFiller.fillReport(JRVerticalFiller.java:117)
	at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:622)
	at net.sf.jasperreports.engine.fill.BaseFillHandle$ReportFill.run(BaseFillHandle.java:135)
	at java.base/java.lang.Thread.run(Unknown Source)

Lendo a respeito deste erro, vi que se trata de uma conversão String.

a coluna que estou tentando somar, é uma variável String na minha aplicação.

Linha 33

A pergunta é, tem como converter DIRETAMENTE NO JASPER uma String para Double? Ou a única solução será alterar boa parte da aplicação em Java?

Se a sua variável vai armazenar um valor numérico, ela não deveria ser String.

1 curtida

@staroski, boa tarde…sim, agora eu sei disso…mas como já tinha feito esta aplicação usando String e ela está até agora funcionando eu não pretendia mudar ela, somente agora no relatório que está me prejudicando um pouco…mas antes de mudar a aplicação, queria saber se há como fazer a conversão no jasper…se não houver, terei que mudar boa parte da aplicação

Pra quê?
Cria um método que retorna aquele valor de forma numérica e não String.
Aí no Jasper chama o método que retorna valor numérico.

1 curtida

@davidbuzatto…pelo que andei lendo, vc é o cara em Jasper…rs…pode me ajudar?

Faz anooooooosssss que não uso kkk… A solução do @staroski não resolveu? Eu tô na correria, não tem como eu olhar com calma seu código, mas vc pode usar código Java dentro de variáveis. É só usar.

1 curtida

@davidbuzatto, obg por responder…então, eu sou novato em programação e não sei como fazer a sugestão do @staroski…mas estou procurando soluções na net…uma hora aparece!!..Obg!