Converter p/ String

Ola a todos…

tentei executar a seguinte conversao:

($F{INT_DESENVPROG_TOTALHORAS} != null)?
((new Integer($F{INT_DESENVPROG_TOTALHORAS}.intValue()/(new Integer(60).intValue()))):(new Integer(0))).toString()
+ ':' +
($F{INT_DESENVPROG_TOTALHORAS} != null)?
((new Integer($F{INT_DESENVPROG_TOTALHORAS}.intValue()%$F{Valor}.intValue())):(new Integer(0))).toString()

o codigo acima tenta pegar um campo do banco e fazer calculos p/ mostrar na tela no formato HH:MM…(no banco estah gravado como minutos)…

mas qdo compilei o codigo, deu o seguinte erro:

C:Documents and Settings
bjoaquiDesktopUntitled_report_1.java:111: ')' expected
((new Integer(((java.lang.Integer)field_INT_DESENVPROG_TOTALHORAS.getValue()).intValue()/(new Integer(60).intValue()))):(new Integer(0))).toString()
                                                                                                                       ^
C:Documents and Settings
bjoaquiDesktopUntitled_report_1.java:114: : expected
((new Integer(((java.lang.Integer)field_INT_DESENVPROG_TOTALHORAS.getValue()).intValue()%((java.lang.Integer)field_Valor.getValue()).intValue())):(new Integer(0))).toString());
                                                                                                                                                                               ^
C:Documents and Settings
bjoaquiDesktopUntitled_report_1.java:238: ')' expected
((new Integer(((java.lang.Integer)field_INT_DESENVPROG_TOTALHORAS.getOldValue()).intValue()/(new Integer(60).intValue()))):(new Integer(0))).toString()
                                                                                                                          ^
C:Documents and Settings
bjoaquiDesktopUntitled_report_1.java:241: : expected
((new Integer(((java.lang.Integer)field_INT_DESENVPROG_TOTALHORAS.getOldValue()).intValue()%((java.lang.Integer)field_Valor.getOldValue()).intValue())):(new Integer(0))).toString());
                                                                                                                                                                                     ^
C:Documents and Settings
bjoaquiDesktopUntitled_report_1.java:365: ')' expected
((new Integer(((java.lang.Integer)field_INT_DESENVPROG_TOTALHORAS.getValue()).intValue()/(new Integer(60).intValue()))):(new Integer(0))).toString()
                                                                                                                       ^
C:Documents and Settings
bjoaquiDesktopUntitled_report_1.java:368: : expected
((new Integer(((java.lang.Integer)field_INT_DESENVPROG_TOTALHORAS.getValue()).intValue()%((java.lang.Integer)field_Valor.getValue()).intValue())):(new Integer(0))).toString());

o q pose estar errado??
olhei varias vezes e nao consegui achar o erro…

valew galera

Com certeza esta faltando um ‘)’ , segundo a msg de erro. Complicado esse teu codigo, voce nao consegue simplificar ele? ( com if-else )… dar manutencao em um codigo assim eh complicado pacas…

Rafael

entao cara…

essa eh uma parte do codigo q to usando no JasperReports…usado p/ fazer relatorios…

nem sei se dah p/ simplificar essa loucura ae…

vou ver o erro e qq coisa respondo aqui de novo…

E que danado é esse $F???

Tenta isso: ( nao sei se eh exatamente o que vc quer )

if ($F{INT_DESENVPROG_TOTALHORAS} == null)
	seila = 0;
	
seila = (int)($F{INT_DESENVPROG_TOTALHORAS} / 60);
seila2 = (int)($F{INT_DESENVPROG_TOTALHORAS} % $F{Valor});

resultado = new String(seila +":"+ seila2);

Rafael

Que tipo de construção é essa:
$F{INT_DESENVPROG_TOTALHORAS}?
Boiei. Isso é alguma linguagem própria da JasperReports?

entao pessoal…

resolvi o primeiro problema…consegui reduzir um pouco aquele codigo e funcionou…

mas vem outra coisa agora…
a segunda parte corresponde aos minutos…se aquela divisao der < 10, preciso colocar um 0 na frente do resultado…

como faria isso?? tentei uma coisa aqui, mas deu erro…

The content of elements must consist of well-formed character data or markup.

alguma ideia??[/code]

vamo la passo a passo

  1. crie uma classe de ajuda com um metodo chamado formatNumber:

class X &#123; public String formatNumber&#40;int i,int before,int after&#41; &#123; java.text.NumberFormat nf = java.text.NumberFormat.getInstance&#40;&#41;; nf.setMinimumIntegerDigits&#40;before&#41;; nf.setMinimumFractionDigits&#40;after&#41;; nf.setMaximumFractionDigits&#40;after&#41;; return nf.format&#40;i&#41;; &#125; &#125;

entao no seu codigo do relatorio reporter voce simplesmente cria uma instancia de x e chama o metodo formatnumber com os parametros desejados :). problema resolvido?

ps: caso voce possa colocar mais de uma linha de codigo no reportmanager, coloca a funcao la e nao crie a classe

Guilherme Silveira

valeu pela dica Guilherme…
mas acho q nao posso criar uma classe auxiliar no jasperreports…acho q nao deve funcionar com ele…

toda aquela instrucao q postei acima eu coloco num campo do meu relatorio no iReport…

Entao tente fazer o seguinte:

java.text.NumberFormat.getNumberInstance&#40;Locale.ENGLISH&#41;.format&#40;TEUNUMEROCOMOLONGOUDOUBLEAQUI&#41;

Me fala o valor que foi retornado por favor

Guilherme Silveira

O Elvis.The.Pelvis perguntou e ninguém respondeu: afinal o que é
$F{INT_DESENVPROG_TOTALHORAS} ???

se não estou enganado !!!
$F{INT_DESENVPROG_TOTALHORAS} no jasperReport é uma referência ao campo de um Select.

Ex. Tenho um Select produtos.codigo, produtos.nome from produtos e quero fazer uma referencia qualquer ao código utilizo $F{codigo}, obs. a letra F vem de Field.

Espero ter ajudado.

OBS. Se estiver errado avisem…[/quote]

Cool! Dei uma olhada no JasperReports… bem legal. Acho que pode ser uma alternativa fantastica para praticamente tudo o que se deseja imprimir… bem melhor q fazer no braço…

bom, galera…

ainda preciso resolver esse probleminha…

&#40;new Integer&#40;$F&#123;INT_DESENVPROG_TOTALHORAS&#125;.intValue&#40;&#41;%$F&#123;Valor&#125;.intValue&#40;&#41;&#41;&#41;

preciso testar esse calculo…se for < 10, concatenar um 0 ates do resultado…

como resolver isso??

Fala sério, Barioni!! C tem que explicar que tem um código do Jasper aí…

Para o Elvis e os outros curiosos, o código fica dentro de um XML e precisa ser sempre um rvalue (ou seja, uma expressão que pode ser atribuída em uma variável). Por isso não dá pra usar if…else e construções assim.

De volta ao problema…
eu sei que vc não precisa usar as classes “de tipo” (String, Integer, Long, etc). pra gerar o relatório, desde que ela tenha um toString(). Vc precisa “importar” a classe no report, e tanto o compilador quanto o cara que roda o seu report (mais especificamente, o filler) precisam ter acesso à sua classe.

Mas o jeito mais simples é usando variáveis. Assim, ó:

&lt;variable name=&quot;horas&quot; class=&quot;java.lang.Integer&quot;&gt;
    &lt;variableExpression&gt;new Integer&#40;$F&#123;INT_DESENVPROG_TOTALHORAS&#125;.intValue&#40;&#41;/60&#41;&lt;/variableExpression&gt;
    &lt;initialValueExpression&gt;new Integer&#40;0&#41;&lt;/initialValueExpression&gt;
&lt;/variable&gt;
&lt;variable name=&quot;minutos&quot; class=&quot;java.lang.Integer&quot;&gt;
    &lt;variableExpression&gt;new Integer&#40;$F&#123;INT_DESENVPROG_TOTALHORAS&#125;.intValue&#40;&#41;%60&#41;&lt;/variableExpression&gt;
    &lt;initialValueExpression&gt;new Integer&#40;0&#41;&lt;/initialValueExpression&gt;
&lt;/variable&gt;

Na hora de preencher o espaço, vc pode colocar:

$V&#123;horas&#125; +
 &quot;&#58; &quot; +
&#40;$V&#123;minutos&#125;.intValue&#40;&#41; &lt; 10&#41;?
&#40;&quot;0&quot; + $V&#123;minutos&#125;&#41; &#58;
&#40;$V&#123;minutos&#125;&#41;

Não é o mais eficiente, mas é o mais bonito. Além disso, vc tem que testar os NULLs…

Boa sorte!!!

que vergonha
eu viajei mesmo no assunto, respondi algo nada a ve neh

galera, desculpe a mancada…

mas consegui resolver meu problema…consegui fazer o iReport reconhecer uma classe minha q fazia todo esse calculo de datas…
basta colocar suas classes num .jar e coloca-lo no classpath do iReport

valew galera…