Как преобразовать число в слова (iReport) - PullRequest
3 голосов
/ 20 декабря 2010

Я хочу конвертировать, например, 1000 в тысячу (валюта). Как я могу сделать это в Джаспере?

Ответы [ 2 ]

3 голосов
/ 05 февраля 2011
  1. См. http://www.rgagnon.com/javadetails/java-0426.html
  2. Создать класс на основе данной реализации.
  3. Скомпилируйте класс и поместите его в каталог, где iReport может прочитать файл.
  4. Обновите CLASSPATH в iReport, чтобы он указывал на каталог, содержащий класс (помните об отношениях каталога с пространствами имен пакетов).
  5. Перезапустите iReport.
  6. Измените выражение текстового поля на: EnglishNumberToWords.convert( $F{field_name} )

Вам придется изменить field_name и тип данных метода convert в соответствии с подробностями вашей реализации.

1 голос
/ 19 июня 2013

Альтернатива ответу Дейва:

1) Если ваша СУБД поддерживает ее (например, HSQLDB), вы можете создать пользовательскую функцию, вызываемую пользователем, которая принимает представление модели данных для поляи преобразует его в представление уровня представления.Например, база данных хранит временные метки внутри себя как числа измененных юлианских дней (удваивается).Java-функция может быть написана и сохранена в базе данных (SQL / JRT) для преобразования из двойного UTC в локализованную строку времени / даты.

2) Написать SQL-запрос для создания таблицы, содержащей данные, которые выхочу в отчете.Разница в том, что вы используете вызываемую пользователем функцию SQL / JRT в исходном столбце, чтобы преобразовать ее в представление уровня представления в таблице результатов.

3) Используйте SQL-запрос (когда он заработает)) в качестве основы для оператора CREATE VIEW (DDL).

4) Создайте свой отчет, используя вновь определенный View в качестве источника данных iReport.

Преимущества: настройка iReports не требуется.Представление, которое вы создаете, может служить основой для любого инструмента отчетности, а не только для iReports.

Недостатки: это создает зависимость между вашей базой данных и JRE и (скорее всего) вашей RDBMS.Чтобы получить доступ к вашей вызванной пользователем функции, вам нужно сохранить функцию в базе данных, и она должна иметь возможность доступа к JRE, чтобы создать представление.Существует стандарт SQL / JRT, и поэтому вполне возможно, что ваша целевая миграционная СУБД сможет его поддерживать, но, конечно, это никогда не гарантируется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...