Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.02.15;
Скачать: CL | DM;

Вниз

Количество знаков после запятой при присваивании из поля таблицы   Найти похожие ветки 

 
Раиса ©   (2008-07-01 11:30) [0]

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

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


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

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


 
Раиса ©   (2008-07-01 11:53) [2]

ADOConnection,ADOQuery


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

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


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


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

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


 
Anatoly Podgoretsky ©   (2008-07-01 13:21) [5]

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

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


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

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

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


 
MsGuns ©   (2008-07-01 15:53) [7]

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


 
Anatoly Podgoretsky ©   (2008-07-01 16:27) [8]

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

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


 
Anatoly Podgoretsky ©   (2008-07-01 16:28) [9]

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

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


 
Раиса ©   (2008-07-01 16:50) [10]

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

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

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


 
Ega23 ©   (2008-07-01 16:59) [11]


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


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



Страницы: 1 вся ветка

Текущий архив: 2009.02.15;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.013 c
2-1230969991
N_SSS
2009-01-03 11:06
2009.02.15
Подключение справочников (Lookup) для DbGridEh


2-1231171332
sh1k4r1
2009-01-05 19:02
2009.02.15
Excel + Delphi


15-1229613114
Andy BitOff
2008-12-18 18:11
2009.02.15
DevExpress и BandedView или как-то по другому.


2-1231224543
Igor'
2009-01-06 09:49
2009.02.15
Как узнать название поля DBGridEh -где изменилось значение?


2-1231259024
Семён
2009-01-06 19:23
2009.02.15
Как обратиться к компоненту на форме по номеру?