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

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

Каким должен быть тип поля в Firebird? [D6, IB6.x, Firebird]


Страницы:   1 2

Пубертанец ©   (2004-02-04 09:10:00) 

Чтобы в SQLDataSet и ClientDataSet этот тип поля был Currency. Что не пытался делать - все равно появляется FMtBCD, а хочу Currency.


Dedushka_Mazai   (2004-02-04 15:54:00) [21]

2Sandman25:
и каким же образом тут потери получаются?


Sandman25   (2004-02-04 15:50:00) [22]

[5] Johnmen © (04.02.04 11:43)

Мы недавно перешли с DEC(18,2) на DEC(18,5). Именно из-за слишком больших потерь при умножениях.
Когда считаешь SUM(ROUND(price*amount,2)), причем в накладной около сотни позиций, а количество хранится в DEC(16,3), почти всегда идет ошибка на 1 копейку в ту или иную сторону.


Dedushka_Mazai   (2004-02-04 14:35:00) [23]

2DCoder:
действительно, маловато будет (15,2) - вчера за ящик кефира заплатил 20,85776р. а вот если бы платил 20,86р. - это ж какие потери за год будут, если каждый день по ящику покупать. а если по два, так вааще вешаться можно :)


Пубертанец   (2004-02-04 14:22:00) [24]

>DCoder

Ставлю NUMERIC(15,5), но в дельфе тип все равно TFMTBCD.
Про свойство Currency в справке написано, что оно только форматирует число в денежном виде, а как насчет расчетов. Будет ли 19.50+0.50=20, а не 19.999999?


Johnmen   (2004-02-04 11:43:00) [25]

>DCoder © (04.02.04 11:12) [4]
>(15,2) - не годится для денег.
>слишком маленькая точность (два знака после запятой)

Да ну ?

>При умножениях ... // и далее по тексту

Чушь. Прошу прощения...


DCoder   (2004-02-04 11:12:00) [26]

Я пользую NUMERIC(15,5)
(15,2) - не годится для денег.
слишком маленькая точность (два знака после запятой)
При умножениях и делениях на различные коэфициенты (колво, НДС, наценки, скидки, валюта...) возникает довольно ощутимая погрешность, поскольку "лишние" цыфры просто втупую отсекаются:
умножая на 0.8444 умножается на 0.84. Таким макаром на 1000грн
теряется или преобретается 4.40грн

Хочешь Currency??? так просто у обьекта поля установи это свойство в TRUE? Делов то :-))


Sandman25   (2004-02-04 11:01:00) [27]

Currency или Money в FB есть?

Пубертанец
Curreny - это Float. Будут потери при длительных операциях.


Пубертанец   (2004-02-04 10:55:00) [28]

Че-то не понял я ответ. Может неправильно объяснил, тогда еще раз:

каким должен быть тип поля в таблице Firebird, чтобы в дельфе в датасете его тип был TCurrencyField. Пока для этого поля у меня в дельфе подставляется тип TFMtBCDField. Если я вручную меняю TFmtBCDField на TCurrencyField, то происходит ошибка при получении данных от сервера. Так вот, какой же тип должен быть этого поля в таблице Firebird? (NUMERIC(15,2) не подходит по вышеописанной причине)


Johnmen   (2004-02-04 09:37:00) [29]

"Хотеть - не вредно"
"Хочешь - сделай"
"Частое нажимание F1 расширяет кругозор"


Страницы:   1 2

Наверх

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