Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2009.02.15;
Скачать: [xml.tar.bz2];

Вниз

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

 
Раиса ©   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.005 c
15-1229929438
Slider007
2008-12-22 10:03
2009.02.15
С днем рождения ! 20 декабря 2008 суббота


1-1207738816
Marser
2008-04-09 15:00
2009.02.15
Аппроксимация методом наименьших квадратов


2-1231077581
Венера
2009-01-04 16:59
2009.02.15
Расчеты


2-1230593760
Семен Кевларвестов
2008-12-30 02:36
2009.02.15
обработка данных КлиентДатасета в потоке


15-1229579107
AIK
2008-12-18 08:45
2009.02.15
Дубликат сайта что ли?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский