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

NoteПримечание

Использование функции TRANSFORM( ) для преобразования большого отрицательного числа, имеющего десятичные знаки может привести к неожиданным результатам, из-за числовых преобразований. Вместо данной функции в этих случаях рекомендуется использовать обычную функцию STR( ), для преобразования больших отрицательных чисел.

TRANSFORM(eExpression, [cFormatCodes])

Параметры

eExpression

Определяет некоторое выражение, которое требуется преобразовать в символьную строку по заданному или стандартному Формату.

cFormatCodes

Определяет строку Правил преобразования.

NoteПримечание

В следующей таблице описаны допустимые форматные правила, используемые в данном параметре cFormatCodes.

cFormatCodes Краткое Описание

@B

Выровненные слева, числовые данные (без ведущих нулей и пробелов)

@C

Добавляются символы "CR" (справа) для положительных чисел типа Currency / Numeric, обозначает Credit (Кредит).

@D

Выполняет преобразование данных типа Date / DateTime, в соответствие с текущим форматом SET DATE....

@E

Выполняет преобразование данных типа Date / DateTime -  BRITISH date format (дд/мм/гггг).

@L

Заполняет числовые данные лидирующими нулями.

@R

Выполняет преобразование по указанной Маске, или Шаблону. Символы шаблона могут не включаться в результирующую символьную строку. Данное преобразование используется только для символьных и числовых данных. Символы Шаблона могут состоять из:

  • 9 или #   определяют символ или цифру.

  • !   преобразует символ нижнего регистра в верхний (lower-case -> uppercase).

NoteПримечание

Visual FoxPro не отображает шаблонные символы, которые располагаются вне диапазона результирующей строки символов.

@T

Исключает лидирующие и замыкающие пробелы из результирующей символьной строки.

@X

Добавляет символы "DB" (справа) для отрицательных чисел форматов currency / numeric, обозначает Debit (Дебит).

@YL

Используется длинный формат для данных типа Date (с указанием Тысячелетия и Века: ГГГГ.мм.дд).

@YS

Используется короткий формат для данных типа Date (без тысячелетия и века: ГГ.мм.дд).

@Z

Если исходное выражение = 0, то оно преобразуется в пробел.

@(

Отрицательные числа форматов currency / numeric заключаются в круглые скобки.

@^

Представляет данные типов currency / numeric в формат с "плавающей точкой" (-1.2300000E+2).

@0

Выполняет преобразование числовых данных в шестнадцатеричное представление (0xA1B5H8). Исходное выражение должно быть положительным и меньшим, чем 4,294,967,296.

@!

Символы нижнего регистра преобразуются в верхний регистр.

@$

Добавляет для данных типа currency / numeric символ денежной единицы, который определяется системной командой SET CURRENCY. По-умолчанию, данный символ разиещается перед или сразу после преобразуемого выражения. Символы денежной единицы, разделители тысяч и символ десятичной точки могут быть изменены при помощи соответствующих системных команд: SET CURRENCYSET SEPARATORSET POINT.

X

Определяет ширину (длину) символьного выражения. Например, если cFormatCodes = 'XX', возвращается только 2 символа.

Y

Преобразует логическое True (.T.) или False (.F.) соответственно в Y (Yes) / N (No).

!

Преобразует соответствующий символ строки в верхний регистр.

.

Определяет местоположение десятичной точки в числовых данных.

,

Определяет местоположение разделителей триад (тысяч), слева от десятичной точки, для числовых данных.

9

Определяет ширину или длину строки, состоящей из цифр.

Например, если cFormatCodes = '999.99',  то в результирующей строке будет три цифры слева и две цифры справа от десятичной  очки.

NoteПримечание

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

В следующем примере демонстрируется необходимость создание соответствующих форматов преобразования данных, и результаты отображения преобразованных данных числового типа (***.**).

 CopyCode imageКопировать Код
CREATE CURSOR myCursor (col1 n(5,2))
INSERT INTO myCursor VALUES (-555.5)
* No format code and returns **.**
? TRANSFORM(myCursor.col1 )
* A format code 1 less than value returns ***.**
? TRANSFORM(myCursor.col1,'999.99' )
* A format code same size as value returns -556.00
? TRANSFORM(myCursor.col1,'9999.99' )

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

  • Смещает десятичную точку правее обычной позиции, округляет числовое выражение.

  • Если число не размещается в формате, представляет его в допустимом формате "с плавающей точкой".

  • Если число не помещается в формате, заменяет все цифры звездочками.

Дополнительную информацию смотрите в разделах: InputMask, свойство и Format, свойство.

Если параметр определения формата преобразования cFormatCodes отсутствует, Visual FoxPro пытается выполнить стандартные преобразования различных типов данных для исходного выражения eExpression.  В следующей далее таблице подробно описываются Правила стандартных преобразований.

Тип Данных Краткое описание Преобразования

Blob

Результирующая строка имеет вид шестнадцатеричного представления двоичных данных, без специфического  для таких случаев префикса (0х). Например, результатом может быть строка "FE0AF2":

 CopyCode imageКопировать Код
TRANSFORM(0hFE0AF2)

Применяется для двоичных данных, TRANSFORM( ) игнорирует форматирующие коды, за исключением случаев определяющих ширину результата (длину). Например, для представленных примеров результатом будет строка "FE0A":

 CopyCode imageКопировать Код
TRANSFORM(0hFE0AF2, "XXXX")
TRANSFORM(0hFE0AF2, "9999")
TRANSFORM(0hFE0AF2, "####")

Для форматирующих кодов, определяющих ширину (длину) результирующей строки имеется ограничение в 255 символов.

Character

Преобразование не выполняется (уже символьный тип данных).

Currency

Преобразование денежных единиц в соответствие с установками в закладке Regional, Options dialog box.

Date

Соответствует преобразованию функции DTOC( ) (по формату SET DATE...) .

DateTime

Соответствует преобразованию функции TTOC( ), соответственно формату SET DATE....

General

Возвращает строку "Gen" для полей типа General, содержащих реальные графические объекты, или строку "gen" для пустых полей типа General (не содержащих графические объекты).

Logical

Преобразует логические выражения True (.T.) и False (.F.) в соответствующие строки символов: ".T." и ".F." .

Memo

Преобразование не выполняется (тип уже символьный).

Numeric (включая Double, Float, или Integer тип данных)

Исключает лидирующие нули и пробелы, а также завершающие нули, находящиеся справа от десятичной точки.

Если исходное число является целым, то десятичная точка не указывается в результирующей строке. Например, число 4.0 преобразуется в строку  "4"

Если исходное число больше нуля, но меньше единицы, в результирующей строке появляется лидирующий ноль. Например, число .4 преобразуется в строку "0.4".

Object

Возвращается строка символов "(Object)".

Varbinary

Результирующая строка имеет вид шестнадцатеричного представления двоичных данных, без стандартного шестнадцатеричного префикса (0х). Например, результатом следующего далее преобразования будет символьная строка "FEOAF2":

 CopyCode imageКопировать Код
TRANSFORM(0hFE0AF2)

Для двоичных данных функция TRANSFORM( ) игнорирует другие форматирующие коды, за исключением символов, определяющих ширину (длину) результирующей строки. Например, для следующих далее преобразований результатом будет строка символов: "FE0A":

 CopyCode imageКопировать Код
TRANSFORM(0hFE0AF2, "XXXX")
TRANSFORM(0hFE0AF2, "9999")
TRANSFORM(0hFE0AF2, "####")

Expand imageВозвращаемое значение

Символьного типа. TRANSFORM( ) возвращает символьную строку, полученную из исходного выражения по заданным или стандартным правилам преобразования.

Expand imageПример

 CopyCode imageКопировать Код
STORE 12.34 TO gnPrice
CLEAR
? TRANSFORM(gnPrice, '$$$$.99') && Displays $12.34
? TRANSFORM(_SCREEN) && Displays (Object)

Expand imageСм. также