Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Количество знаков после запятой при присваивании из поля таблицы [D7, MSSQL]


Раиса ©   (2008-07-01 11:30:00) 

В поле 6 знаков после запятой. Присваиваю переменной через запрос значение поля - остается 4.
В запросе написала cast(latitude as decimal(10,6)) as LatitudeD. Не помогло.
При присваивании написала: RoundTo(ADQ.FieldByName('LatitudeD').AsFloat,-6) - безрезультатно.
AsVariant и  Value - никаких изменений.

Как с этим бороться? Или в переменной (double) нормально, а так я вижу в Watch List?


Ega23   (2008-07-01 16:59:00) [1]


> Вроде не потеряла знаков...


Вообще-то потеряла.


Раиса   (2008-07-01 16:50:00) [2]

MsGuns ©   (01.07.08 15:53) [7]
Нет, при вычислениях урезание.

Anatoly Podgoretsky ©   (01.07.08 16:28)
Спасибо за советы, хотя не всё понятно...

Я сделала проще в Select-е умножила на 1000000, а потом уже делила и использовала RoundTo. Вроде не потеряла знаков...


Anatoly Podgoretsky   (2008-07-01 16:28:00) [3]

> MsGuns  (01.07.2008 15:53:07)  [7]

Кстати легко проверить FormatFloat('0000.000000', Value) результат будет y.xxxx00


Anatoly Podgoretsky   (2008-07-01 16:27:00) [4]

> MsGuns  (01.07.2008 15:53:07)  [7]

Если бы, тогда было бы просто.
На самом деле вместо поля DECIMAL(N, M) Борланд использует тип MONEY это и дает четыре знака после запятой.


MsGuns   (2008-07-01 15:53:00) [5]

Урезание при отображении ?


Anatoly Podgoretsky   (2008-07-01 15:01:00) [6]

> Плохиш  (01.07.2008 13:21:04)  [4]

Раз речь идет о знаках после запятой, то TBcdField, а в данном случае надо TFmtBcdField - Борланд с АДО это не умеет.
Это частая известная ошибка.


Плохиш   (2008-07-01 13:21:00) [7]


> Раиса ©   (01.07.08 11:30)

Посмотри какой тип поля в коллекции TFieldDefs в ADQ и какой тип поля в таблице бд.


Anatoly Podgoretsky   (2008-07-01 13:21:00) [8]

У Борланда серьезные проблемы с BCD и АДО
Они определяют твой тип поля как TBcdField - но на самом деле это не BCD, а Currency.
В тоже время правильный тип поля в АДО - TFMTBCDField
Попробуй создать постоянное поля в дизайнтайм, но АДО, с которым у Борланда проблемы, этому сильно сопротивляется.

Другой более сложный вариант это отказ от ADO.VCL и прямая работа с АДО + необходим ActiveX для поддержки BCD полей, вплоть до 10^38 - имя не помню, но в Интернете есть решения и по этому варианту.


Поросенок Винни-Пух   (2008-07-01 12:56:00) [9]

AsFloat это Double, то есть плавающая точка.
То есть там вообще нет никакого фиксированного количества знаков после запятой.


Раиса   (2008-07-01 11:53:00) [10]

ADOConnection,ADOQuery


Правильный-Вася   (2008-07-01 11:51:00) [11]

компоненты доступа?


Наверх

Титульная страница Поиск, карта сайта Написать письмо