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