К-во знаков после запятой.

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Гость

Сообщение Гость »

Hello ALL,

С55 ШВС Clarion 2.1
При изменении поля decimal(15,2) на decimal(15,3) все существующие числа в данном поле файла данных уменьшаются в 10 раз (как бы число привязано к правому краю формата: 53,48 -> 5,348), а "новые" данные - правильные.
Утилита от В.Синявского - Clarview - убеждает, что вновь введенные данные увеличились в 10 раз, а "старые" - правильные.

Что интересно: изменилась структура таблицы, но программа продолжает работать (конвертация базы не требуется).

Как привязать десятичную точку к "своему" законному месту и не умножать данные каждый раз при смене формата числа?


--
Best regards,
Алексей mailto:aps@kr.km.ua

(Добавление)
Что интересно: изменилась структура таблицы, но программа продолжает работать (конвертация базы не требуется).
Как раз конвертация требуется, то что драйвер пропускает такую ситуацию - это его косяк, переползающий из версии в версию.
Как привязать десятичную точку к "своему" законному месту и не умножать данные каждый раз при смене формата числа?
Конвертировать базу, создав новую таблицу с правилным описанием.
Можно руками исправить загловок файла - но это я рекомендовать не могу - больно тонкое дело.

--
Best regards,
Vadim mailto:vadim@softcreator.com
ICQ: 82308757
Написал: ClaList(2)
Гость

Сообщение Гость »

Изменение формата DECIMAL - такая-же модификация БД, как и изменение, к примеру, размера строкового поля, или, что более точно, перестановка полей внутри группы.
И после подобных модификаций просто необходимо делать конвертацию файла. Если этого не требует сам драйвер, то это - просто его глюк!

Если ты внимательно почитаешь описание DECIMAL, то поймешь, что изменяя второй размер, не изменяя первого ты просто будешь перераспределять цифры между целой и дробной частями. Поэтому, естественно, что при твоем изменении формата DECIMAL значение целой части таких полей потеряло один младший разряд, что и привело к его делению на 10.

=============================
С уважением, Олег А. Руденко.
Oleg_Rudenko@mail.ru
Oleg_Rudenko@mail333.com
Библиотека DynaLib
http://dynalib.narod.ru

Написал: ClaList(2)
Ответить