Главная страница
    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.46 MB
Время: 0.006 c
2-1209619132
FoxikM
2008-05-01 09:18
2009.02.15
Как копировать файлы с "неправильным" именем


2-1231237384
RUBEY
2009-01-06 13:23
2009.02.15
Ошибка в коде отправки почты


15-1229929327
Slider007
2008-12-22 10:02
2009.02.15
С днем рождения ! 21 декабря 2008 воскресенье


15-1229513514
Knight
2008-12-17 14:31
2009.02.15
Эмуляция событий мыши.


15-1229487354
Riply
2008-12-17 07:15
2009.02.15
DM и мысли о вечном :)





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский