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

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


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

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

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

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



Что не так?
...
Рейтинг: 0 / 0
Проблема с Numeric
    #32948803
Mr.Nimnull
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
40702810260330010000 - это скопировал из ячейки
как только фокус из ячейки убираю fox пишет после 330 е+20
...
Рейтинг: 0 / 0
Проблема с Numeric
    #32948810
Mr.Nimnull
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
substr( alltrim(str(er, 20, 0)), 1, 20)
если ставишь 1 то первый символ в выводимом значении точка
если со второго начинать, число вроде сначала нормальное а конца как это не прискорбно все равно нет
...
Рейтинг: 0 / 0
Проблема с Numeric
    #32948811
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Банковские счета надо хранить в C (20)....... А налоговая может поставлять текстовый файл с разделителями - надо только договориться с таможней, простите с налоговой
...
Рейтинг: 0 / 0
Проблема с Numeric
    #32948815
Mr.Nimnull
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да я их и хранить буду в С(20) только подскажите как это 20 из этого поля достать
...
Рейтинг: 0 / 0
Проблема с Numeric
    #32948823
Mr.Nimnull
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А кроме как договариваться, другого способа нет что ли ? Уважаемый профессионалы
...
Рейтинг: 0 / 0
Проблема с Numeric
    #32948827
lo-pata
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да плевать че фокс пишет! Допустим тебе пришло число a из 19 цифр. Ты бери это число a и str(а, 19, 18). Получится строка без всяких E+19.
...
Рейтинг: 0 / 0
Проблема с Numeric
    #32948836
Mr.Nimnull
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А если это число все таки 20-тичное приходит тогда что делать
...
Рейтинг: 0 / 0
Проблема с Numeric
    #32948838
lo-pata
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да даже если 20 знаков - последние то все-равно нули. Взял alltr(str(a/10,19))+'0'. Вот тебе и все преобразования.
...
Рейтинг: 0 / 0
Проблема с Numeric
    #32948856
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стоп... А вот тут проблема у налоговой - у них искажаются номера счетов - так-как последние цифры то ведь не сохраняются

P.S. Я договаривался с налоговой - там работают люди... Причем у Вас есть повод - присылаемый формат искажает данные, хотя я не верю, что они у них хранятся в Numeric (FoxPro)...
...
Рейтинг: 0 / 0
Проблема с Numeric
    #32948861
Mr.Nimnull
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот интересная штука
40702810260330010000 - это скопировал из ячейки
пишу ? alltr(str(account/10,19))+'0'
так он мне вместо 1 (*****33001*** этой единицы) 0 ставит
...
Рейтинг: 0 / 0
Проблема с Numeric
    #32948867
lo-pata
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Sergey Ch

Договориться с налоговой можно, если данные по работе оч нужны. А может человек сейчас налоговую базу ломает, а мы (сволочи такие) помочь не хотим! :))

Сорри, шютка.
...
Рейтинг: 0 / 0
Проблема с Numeric
    #32948868
Mr.Nimnull
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
lo-pata да блин в натуре чего делать, ну это же из эмбрионального периода задача ну чего за фигня
...
Рейтинг: 0 / 0
Проблема с Numeric
    #32948869
Mr.Nimnull
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это я про себя
...
Рейтинг: 0 / 0
Проблема с Numeric
    #32948872
Mr.Nimnull
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да ничего я не ломаю. Я в фонде МедСтраха работаю. Мне этот счет нужет чтобы страхователя зарегистрировать, Просто он этот гадский счет в карте страхователя распечатывается я его потом все равно по-символьно должен вырезать и в квадратике по цыфре вставить
...
Рейтинг: 0 / 0
Проблема с Numeric
    #32948889
Mr.Nimnull
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хух по моему нашел.
Lo-pata, да твое имя надо как LO-PATA писать. Огромное вам спасибо и Sergey-Ch, что не оставили...Что крутили вместе со мной, а вот и решение

? alltr(str(account/1000*100,19))+'0'
...
Рейтинг: 0 / 0
Проблема с Numeric
    #32948896
Фотография Redrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разве такое издевательство можно назвать решением??? Ты сам-то в его корректности уверен?
Сегодня они дают 17-18 цифирок, а завтра дадут все 20...

Я бы в таком "крайнем" случае копал FOPEN()...
...
Рейтинг: 0 / 0
Проблема с Numeric
    #32948910
Mr.Nimnull
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И как бы если не секрет ты его копал ?
...
Рейтинг: 0 / 0
Проблема с Numeric
    #32948919
Фотография Redrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гм... Ну, открываешь файлик, вычисляешь "периодичность" и вперед!
...
Рейтинг: 0 / 0
Проблема с Numeric
    #32948951
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RedrikЯ бы в таком "крайнем" случае копал FOPEN()...
Нет, надо договариваться с налоговой - это единственно правильный путь...
...
Рейтинг: 0 / 0
Проблема с Numeric
    #32948985
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Redrik ведь привел ссылку

/topic/81347&hl=val

Ты что, так ее и не прочитал?

Любая математическая операция с содержимым поля Numeric автоматом сбросит точность до 14 знаков. Т.е. именно твое деление перед переводом в строку и дает погрешность.

Решение проблемы также приводилось на этом сайте. Поскольку поиск глючит, то на словах примерно так:

Из налоговой данные приходят в таблицах DOS-формата. А в этом случае досточно просто поменять один символ в заголовке таблицы, чтобы изменить тип данных столбца. Т.е. вместо Numeric сделать его Character (в заголовке надо букву "N" заменить на "C")
...
Рейтинг: 0 / 0
Проблема с Numeric
    #32949038
Фотография Redrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ...досточно просто поменять один символ в заголовке таблицы, чтобы изменить тип данных столбца. Т.е. вместо Numeric сделать его Character (в заголовке надо букву "N" заменить на "C")
СУПЕР! :-))) Вот где красиво видна ценность нестандартного мышления!!!

ВладимирМИз налоговой данные приходят в таблицах DOS-формата.
Хм... У них уже VFP... Да какой там VFP - ORACLE на носу!!! ;-)
Честно говоря мало приходилось шастать по заголовкам таблиц... А в свободных VFP-шных таблицах ведь не должно быть сложнее с типом полей?
...
Рейтинг: 0 / 0
Проблема с Numeric
    #32949045
Mr.Nimnull
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ладно уели.
А если серьезно, то большое спасибо ВладимирМ и Redric. Я ведь с VFP не как Regrik с 92-го. Ссылку я проморгал каюсь, вернее я перед тем как вопрос задать по форуму полазил и что-то подобное своему вопросу там нашел, но ничего не понял из ответа, поэтому решил задать свой.

С заменой типа в заголовке это действительно классно. Огромное спасибо ВладимирМ. Талант не пропьешь., Профи он и есть Профи. Еще раз огромное спасибо.

P.S. Redrik прошу прощения за дурной вопрос (как копать и *****). Это просто минутное упоение хоть каким-то решением...
...
Рейтинг: 0 / 0
39 сообщений из 39, показаны все 2 страниц
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Проблема с Numeric
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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