Foxpro число в строку

В ходе написания большой программы вам наверняка придется столкнуться с получением числа из его строкового представления. Давайте посмотрим, как это делается в VFP.

Собственно нас будет интересовать только одна функция VAL(), которая и осуществляет данное преобразование. Вот пример от Microsoft иллюстрирующий ее работу:

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

Например, у нас есть программка для построения некоего отчета, в котором фигурируют номера документов, а берутся они из числового поля таблицы. Поэтому номера типа "123а" мы записать туда не можем, а вот "123" запросто. Напишем функцию, возвращающую целое число из смешанного номера. Создадим программу с именем GetDigits, в ней пишем код:

Получаем следующий результат:

Обратное преобразование (из числа в строку) осуществляется функцией STR(). Здесь только следует обратить внимание на то, что в ней дополнительными параметрами могут указываться длина возвращаемой строки и количество десятичных мест. Если передаваемых десятичных мест меньше, чем реально есть в числе, то результат автоматически округлится в соответствии с передаваемыми параметрами. Если длина строки указывается меньше чем порядок числа, то вернется "*":

Надеюсь, что теперь преобразование Character — Numeric не вызовет у вас трудностей.

Объектно-ориентированный и процедурный язык программирования систем управления реляционными базами данных, разработанный корпорацией Microsoft.

Новости

Visual FoxPro 9 позволяет создавать ещё более производительные приложения баз данных. Двадцатиление FoxPro! Microsoft принимает поздравления. Visual FoxPro Toolkit for .NET — более 225 функций VFP 7.0, для языков .NET (подробнее)

Функция STR( )

Возвращает символьный эквивалент заданного числового выражения.

STR( nExpression [, nLength [, nDecimalPlaces ]])

Задает числовое выражение, обрабатываемое функцией STR( ).

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

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

Задает число десятичных знаков в символьной строке, возвращаемой функцией STR( ). Чтобы задать это число, необходимо указать аргумент nLength .

Если задано меньше десятичных знаков, чем содержится в выражении nExpression , лишние цифры отбрасываются.

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

Когда я выполняю следующее в командной строке: ЛЕВЫЙ (STR (20110547), 4)

Отображается следующее значение: 20

Я ожидал, что это вернется в 2011 году. Я делаю что-то не так или есть что-то, что я не учитываю?

2 ответа

Есть несколько способов сделать это:

ЛЕВЫЙ (ALLTRIM (STR (20110547)), 4)

Вы должны LTRIM или ALLTRIM функцию STR, поскольку она добавляет начальные пробелы. Из документации:

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

Вы также можете использовать функцию TRANSFORM:


[an error occurred while processing the directive]
Карта сайта