Функция ToText

Оценить
(2 голоса)

Очень важной функцией, которой вы будете часто пользоваться в строковых формулах, является функция ToText. Она служит для преобразования в строки других типов данных с целью их последующего использования в формулах конкатенации или операциях сравнения. Функцию ToText можно применять для преобразования в строки чисел, дат, значений времени и практически всех других типов данных. Эта функциональная возможность позволяет избегать проблем, подобных показанной на рис. 5.13.

Такая проблема возникает из-за невозможности выполнения конкатенации числового поля со строковым литералом (или любой другой комбинацией несоответствующих ему типов данных). Чтобы преобразовать числовое поле или поле денежного типа в строку, которую можно было бы сцепить с другой строкой, используйте функцию ToText.

Функция ToText

Например, проблему из предыдущего примера можно разрешить следующим образом:

"Благодарим за покупку товаров на сумму " +

ToText({Customer.Last Year’s Sales}) + " в прошлом году."

Эта формула вернет представленную ниже строку:

Благодарим за покупку товаров на сумму $32421,27 в прошлом году.

Развернув в окне Function Tree категорию Strings, вы увидите, что существует несколько версий функции ToText, принимающих от одного до пяти аргументов. А также вы можете заметить, что функция CStr содержит точно такой же набор аргументов. Функции CStr и ToText абсолютно идентичны, поэтому вы спокойно можете пользоваться любой из них.

Совет. В случае, когда для конкатенации строк используется операция <£, необходимость в применении функции ToText снижается, поскольку эта операция выполняет автоматическое преобразование, если в формуле присутствуют данные нескольких типов. Однако при желании контролировать формат преобразовываемых значений, функцией ToText воспользоваться все же придется, поскольку только она позволяет обеспечить специальное форматирование.

Подробное описание функции ToText можно найти в оперативной справочной системе Crystal Reports или в приложении А, но здесь мы все же приведем еще несколько дополнительных примеров ее применения. Итак, функция ToText может использоваться в следующих ситуациях:

•    Для определения количества десятичных разрядов. Формула

"Благодарим за покупку товаров на сумму " &

ToText({Customer.Last Year’s Sales},0) & " в прошлом году."

возвратит

Благодарим за покупку товаров на сумму $32421 в прошлом году.

Второй числовой аргумент функции ToText определяет, сколько десятичных разрядов будет использоваться при преобразовании числового или денежного поля в текстовую строку.

•    Для определения разделителя тысяч. Формула

"Благодарим за покупку товаров на сумму " &

ToText({Customer.Last Year's Sales},0,"") &

" в прошлом году."

Благодарим за покупку товаров на сумму $32421 в прошлом году.

Третий строковый аргумент функции ToText определяет, какой разделитель тысяч будет использоваться при преобразовании числового или денежного поля в текстовую строку. В рассматриваемом примере две стоящие рядом кавычки обозначают пустую строку, а это значит, что ToText не будет использовать разделитель тысяч.

•    Для форматирования полей даты. Формула "Ваш заказ был сделан " +

ToText({Orders.order.Date},"dddd, MMMM d, yyyy") возвратит

Ваш заказ был сделан в понедельник, 12 сентября 2005

В этой версии функции ToText в качестве второго аргумента используется форматирующая строка. В форматирующей строке (иногда также называемой маской) в виде указателей места заполнения вводятся специальные символы (знаки фунта, нули, десятичные точки, буквы d,m, у и прочие), которые определяют, как будут форматироваться данные при их преобразовании в строку. В рассматриваемом примере символы dddd указывают, что название дня недели должно отображаться полностью, символы ММММ — что название месяца тоже должно отображаться полностью, символ d — что день месяца должен отображаться без нуля, а уууу — что год должен отображаться в виде четырех цифр. Любые включаемые в форматирующую строку символы, которые не могут быть преобразованы в указатели места заполнения (такие как запятые и точки), просто добавляются в строку как литералы.

Совет. Важно не забывать о том, что регистр символов, вводимых в качестве указателя места заполнения, имеет значение. Например, при форматировании полей времени, символы h (нижнего регистра) указывают, что значение времени должно отображаться в 12-часовом формате, а символы Н (верхнего регистра) — что значение времени должно отображаться в 24-часовом формате. Кроме того, если регистр был выбран неверно, Crystal Reports просто включит эти символы в результирующую строку как литералы.

Еще одна встроенная функция — ToWords — может весьма пригодиться при распечатке чеков в Crystal Reports. Взгляните на следующую формулу:

ToWords({PAYROLL.NET_CHECK_AMT})

Будучи помещенной в отчет, эта формула возвратит такой результат для записи сотрудника с чистой зарплатой в $1231.15:

one thousand two hundred thirty-one and 15/100

Разделение строк/извлечение строк по частям
Формулы, работающие с типом даты/времени
Количество дней между двумя датами
Функция DateValue
Формулы If-Then-Else

Добавить комментарий


Защитный код
Обновить