Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Проблема с Numeric / 25 сообщений из 39, страница 1 из 2
05.03.2005, 16:16
    #32948648
Mr.Nimnull
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с Numeric
Уважаемый профессионалы.
Помогите разобраться
Есть поле в простой таблице N(20,0). В browse таблицы оно видно правильно, если пытаешься его записать в поле другой таблицы выдается ошибка. Тип полей совпадает.
Копирование осуществляется через элемент массива, чтобы иметь возможность отменить добавление в случае отмены пользователем.

Можно ли как нибудь автоматически избавиться от этого E+20 в конце цисла при его кпировании
...
Рейтинг: 0 / 0
05.03.2005, 16:22
    #32948656
lo-pata
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с Numeric
Код привести можно? А то лично мне, не совсем ясно о чем идет речь.
...
Рейтинг: 0 / 0
05.03.2005, 16:39
    #32948687
Mr.Nimnull
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с Numeric
Есть таблица в которой есть поле Account с типом N(20,0), там находится число 40702810260330010000. Это номер расчетного счета.
Когда через brow на него смотришь, стоишь на нем, оно отображается правильно, как написал. А вот когда уходишь с него то .40702810260330E+20
Когда его копируешь в какую-либо переменную, например элемент массива, то оно копируется как написано во втором случае.
При попытке присвоить это значение полю другой таблицы с таким же типом выдается сообщение "Numeric overflow. Data was lost". Причем если нажмешь Ignore то скопируется правильно, но там таких записей 1000000 может быть, каждый раз на Ignore жать не хорошо.

Код в разных местах лежит, но примерно так

select pol
store account to vfr(10)

select dest
replace account with vfr(10)

Причем элементы массива не одного типа. 9-м элементом там может быть например символьное значение
...
Рейтинг: 0 / 0
05.03.2005, 17:12
    #32948744
Mr.Nimnull
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с Numeric
Все ушли на фронт. Или все считают миой вопрос уж до такой степени простым, что боятся запачкаться детскостью ситуации ?
...
Рейтинг: 0 / 0
05.03.2005, 17:16
    #32948749
lo-pata
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с Numeric
Цитата из классики: "Поля типа Float и Numeric предназначены для хранения значений, в представлении которых используется не более 20 цифр и не более 19 десятичных знаком. При этом для хранения каждой цифры в таблице требуется один байт памяти... При определении размеров полей не забывайте, что отрицательные значения требуют дополнитеьной позици для хранения знака минус. "
От себя бы посоветовал хранить номера счетов в символьном виде - т.е. поле character и пиши туда номера счетов до 254 символов.
...
Рейтинг: 0 / 0
05.03.2005, 17:17
    #32948751
lo-pata
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с Numeric
Некоторые, просто, еще и на работу иногда отвлекаются. :))
...
Рейтинг: 0 / 0
05.03.2005, 17:22
    #32948757
Mr.Nimnull
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с Numeric
Да я это понимаю. Они ко мне приходят в таком формате. Мне бы их откупорить, я это число в полном виде получить не могу. Чтобы потом в символьном записать.
Преобразовываю его в символьный формат, это Е тоже приобразовывается.
Пытаюсь преобразовать и вырезать символы, так оно направильно преобразовывается, на последней этой 10000 откуда ни возьмись 9 встает как из под полы...
...
Рейтинг: 0 / 0
05.03.2005, 17:26
    #32948759
lo-pata
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с Numeric
В каком таком формате они к тебе приходят? Уже в виде таблицы фоксовской с полем N(20,0)?
...
Рейтинг: 0 / 0
05.03.2005, 17:26
    #32948760
Redrik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с Numeric
Забудь про Numeric! Пустая трата времени! пройденный этап:
/topic/81347&hl=val
...
Рейтинг: 0 / 0
05.03.2005, 17:27
    #32948764
Mr.Nimnull
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с Numeric
Ну помогите, ну...
Не ужели никто на знает как это число в нормальный вид получить без этого Е.
А потом я его хоть в логический переведу. Шутка!. Вся канитель, извиняюсь из-за этого и стоит....Плиз...
...
Рейтинг: 0 / 0
05.03.2005, 17:29
    #32948771
lo-pata
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с Numeric
Ну какой же дятел, извините за выражение, будет номер счета из 20-и цифр писать в numeric? Последние цифры то потеряются все-равно!
...
Рейтинг: 0 / 0
05.03.2005, 17:30
    #32948773
Mr.Nimnull
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с Numeric
Да, Lo-parta, именно так, Эти данные из налоговой так приходят. Я и рад бы забыть, у себя обязательно забуду, только вот как правильно это число у них из базы взять
...
Рейтинг: 0 / 0
05.03.2005, 17:33
    #32948776
lo-pata
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с Numeric
Еще раз спрашиваю: у них как лежат эти данные? У них фоксовая база или в чем другом сделана?
...
Рейтинг: 0 / 0
05.03.2005, 17:34
    #32948779
Mr.Nimnull
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с Numeric
Извени lo-pata опечатался. Оно приходит где-то 17 - 18 цифр, так что у них запас есть. Просто они fox-ом через эту мантиссу копируются...
...
Рейтинг: 0 / 0
05.03.2005, 17:35
    #32948782
Mr.Nimnull
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с Numeric
База fox-овская приходит. Обычный dbf файл
...
Рейтинг: 0 / 0
05.03.2005, 17:36
    #32948783
lo-pata
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с Numeric
Нет, подожди! У тебя E+19 появляется только когда цифр уже 20. Если цифр 19 и меньше - в таблице все будет ОК.
...
Рейтинг: 0 / 0
05.03.2005, 17:44
    #32948797
lo-pata
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с Numeric
И в любом случае можно юзать функцию STR().


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

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

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

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



Что не так?
...
Рейтинг: 0 / 0
05.03.2005, 17:46
    #32948803
Mr.Nimnull
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с Numeric
40702810260330010000 - это скопировал из ячейки
как только фокус из ячейки убираю fox пишет после 330 е+20
...
Рейтинг: 0 / 0
05.03.2005, 17:49
    #32948810
Mr.Nimnull
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с Numeric
substr( alltrim(str(er, 20, 0)), 1, 20)
если ставишь 1 то первый символ в выводимом значении точка
если со второго начинать, число вроде сначала нормальное а конца как это не прискорбно все равно нет
...
Рейтинг: 0 / 0
05.03.2005, 17:50
    #32948811
Sergey Ch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с Numeric
Банковские счета надо хранить в C (20)....... А налоговая может поставлять текстовый файл с разделителями - надо только договориться с таможней, простите с налоговой
...
Рейтинг: 0 / 0
05.03.2005, 17:51
    #32948815
Mr.Nimnull
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с Numeric
Да я их и хранить буду в С(20) только подскажите как это 20 из этого поля достать
...
Рейтинг: 0 / 0
05.03.2005, 17:55
    #32948823
Mr.Nimnull
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с Numeric
А кроме как договариваться, другого способа нет что ли ? Уважаемый профессионалы
...
Рейтинг: 0 / 0
05.03.2005, 17:57
    #32948827
lo-pata
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с Numeric
Да плевать че фокс пишет! Допустим тебе пришло число a из 19 цифр. Ты бери это число a и str(а, 19, 18). Получится строка без всяких E+19.
...
Рейтинг: 0 / 0
05.03.2005, 18:05
    #32948836
Mr.Nimnull
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с Numeric
А если это число все таки 20-тичное приходит тогда что делать
...
Рейтинг: 0 / 0
05.03.2005, 18:06
    #32948838
lo-pata
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с Numeric
Да даже если 20 знаков - последние то все-равно нули. Взял alltr(str(a/10,19))+'0'. Вот тебе и все преобразования.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Проблема с Numeric / 25 сообщений из 39, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]