Archive

Archive for July, 2010

Dicas para JasperReports/iReport

July 12th, 2010

Estava procurando na internet materiais sobre iReport para me auxiliar num relatório que estou desenvolvendo, e encontrei estas dicas sobre o iReport e decidi compartilhar aqui no meu blog também:

Algumas considerações:

1) cuidado ao dar um nome para salvar o seu relatório no iReport. Apesar da ferramenta não exigir que esse nome seja o mesmo que você forneceu ao criar o relatório, o engine Jasper irá usar esse nome, e não o nome do arquivo, para gerar o .jasper e o .jrprint (o default). Por exemplo, se o seu relatório se chama MeuRelatorio, e o arquivo se chama mrelat.jrxml, os arquivos gerados serão MeuRelatorio.jasper e MeuRelatorio.jrprint e não mrelat.jasper nem mrelat.jrprint!

2) Cuidado com campos cujos valores podem ser grandes. Nas propriedades do campo (duplo clique), selecionar a aba TextField e marcar a opção stretch with overflow. Atenção: na aba common, existe o Stretch type, mas esse tem a ver com a posição relativa às outras colunas e não com o conteúdo do campo.

3) É possível criar fontes de relatório, que são fontes com características pré-definidas e que depois podem ser usadas por todo o relatório. No iReport, para criar uma fonte nova, ir no menu Visualizar – fontes do relatório, apertando depois o botão new e configurando a fonte. Para usar uma fonte dessas, ir nas propriedades do texto, clicar na aba fonts. O primeiro campo dessa aba é o report fonts, basta escolher.

4) Uso do printWhenExpression: elementos com essa expressão, só são impressos se a expressão (tipo Boolean) for verdadeira. Um exemplo:

new Boolean ($F{codCliente}).intValue() % 10 == 0)

Faz com que o campo codCliente só seja impresso se for múltiplo de 10.

5) outro recurso, digamos, avançado é o de scriptlets. Scriptlets são classes que extendem JRAbstractScriptlet ou JRDefaultScriptlet, que extende a anterior. Essas classes servem para implementar algum tipo de cálculo que não os já existentes (soma, média, contagem, etc…). As classes base oferecem métodos que são disparados automaticamente cada vez que um “evento de relatório” acontece. Exemplos: beforeColumnInit(), afterDetailEval(), beforePageInit(), e assim por diante.

Para usar um scriptlet num relatório (aparentemente só é possível usar um), é preciso fornecer o atributo scriptletClass do elemento. Esse elemento é referenciado pela variável REPORT_SCRIPTLET.

No iReport, isso é configurado em visualizar – propriedades do relatório, na aba scriptlet.

Fonte: http://rederia.net/2010/04/21/dicas-para-jasperreportsireport/

Diversos

Bug Javascript

July 5th, 2010

Todos que me conhecem sabe que eu simplesmente amo javascript. A maior falha da linguagem (na minha opinião) já foi corrigida com o ajax, que permite o acesso a bancos sem dar o “chato” submit.

Imagine uma linguagem de programação em que você só precisa do bloco de notas e um navegador (coisa que todo computador tem) para fazer as mais incríveis e inimagináveis proezas. Nutro paixão pela linguagem porque aprendi a programar com javascript, nos meus idos de 15 anos (época em que não tinha a menor idéia de como fazer um Borland C rodar, ou um Eclipse por exemplo).

Agora, que javascript não é perfeita ninguém discute. Não vou falar neste artigo no fato da linguagem não exigir declaração das variáveis, utilizar apenas o “var” para qualquer tipo primitivo, que não é segura, etc…

O que vou relatar é um bug assutador da linguagem:

Quanto é 1000.28 – 1000?

Pois é, para o javascript o resultado incrivelmente não é 28!

Ou 0.1 + 0.2?

Não espere um 3 exato!

Faça você mesmo o teste!

<script>
alert(1000.28 - 1000);
alert(0.1 + 0.2);
</script>

O que acontece é que os “números em Javascript são representados internamente com 64 bits e cada número pode ter no máximo 17 dígitos significativos”, palavras de Carlos Brando.

Para mais exempos e explicações, recomendo o blog do Carlos, acessando http://www.nomedojogo.com/2009/08/17/isto-e-um-bug-no-javascript/

Até a próxima!

Diversos