![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Количество знаков после запятой при присваивании из поля таблицы [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]компоненты доступа?