Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
07.10.2003, 00:24
|
|||
|---|---|---|---|
|
|||
Неприятные особенности типа Money |
|||
|
#18+
Господа, имеется таблица, содержащая сведения о денежных начислениях группе сотрудников, т.н. "наряд". Нужно раскрутить на всех некую премию, разбив ее пропорционально уже имеющимся в таблице сведениям. Для этого запускается Update, который успешно отрабатывает. Все бы ничего, но поля для хранения народных финансов я соблазнился сделать типа Money. В результате получается вот какой казус: работающий после всего этого отчет утверждает, что сумма по столбцу "Премия" как раз равна значению, которое мы "раскручивали", а если посчитать ручками, то НЕТ (причем не всегда). Т.е. если хотели разбить 111.11 руб. на троих, то что-то типа: Премия 1-й 11,17 2-й 65,36 3-й 34,59 -------- 111,11 А на самом деле 11,17+65,36+34,59=111,12 руб ! Разница всего на копейку, однако неприятно. Оказалось , что сумма в отчете ВЕРНА, т.к. злой комп складывает не те значения типа Money, которые коварно отображаются в гриде и отчете, а нечто с 3-5 знаками после запятой, скрывающееся под их личиной (я привел Money к Str и убедился в этом). Вопрос: как ФОРМАТИРОВАТЬ результат Update? Если никак, то какое существует надежное решение для округления значений нужного поля до N знаков? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.10.2003, 05:13
|
|||
|---|---|---|---|
Неприятные особенности типа Money |
|||
|
#18+
Pozdravlyu !!! Ybedi buxgaltera, chto eto neizbejno ili pishesh eshe odnu proceduru posle formirovaniya otcheta, tebe pridetsya yznat` summu, na kotoruu "ne iidet" otchet, podelit` ee mejdu ichastnikami proporcionalno ix premiyam, i otnyat` y nix etu summu. ya v svoe vremya ybil ne odin chas chto bi ob`yasnit` glavnomu buxgalteru, chto 3.5 + 5.5 <> Round(3.5) + Round(5.5) udachi ;)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.10.2003, 05:15
|
|||
|---|---|---|---|
Неприятные особенности типа Money |
|||
|
#18+
v tvoem sluchae nado y 2-й 65,36 otnyat` 1 kopeiku ;) potomu, chto y nego samaya bolshaya premiya ;)) delitsya nado ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
07.10.2003, 21:05
|
|||
|---|---|---|---|
|
|||
Неприятные особенности типа Money |
|||
|
#18+
В том и фишка, чтобы узнать ту самую "разницу" между тем, что отображается и что есть на самом деле. Select sum("Премия") все те же 111.11 руб. :( Дополнительный вопрос в тему : можно ли не используя механизм фильтров провести несколько действий с КАЖДОЙ из удовлетворяющей определнному условию записей? (Если угодно, аналог scan...endscan в FoxPro). P.S. dragonx, а round так,как ты упомянул работает в фоксе, в Delphi он вроде бы округляет до целого. Ты что, тоже родом из фокса ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
08.10.2003, 20:28
|
|||
|---|---|---|---|
|
|||
Неприятные особенности типа Money |
|||
|
#18+
Мэтры, неужто же Delphi не дает возможности нормально округлять народные деньги ??? В принципе, возможна цепочка CurrToStr-StrToFloat-FloatToStrF(до 2 знаков)-StrToCurr, но ведь это же извращение ! К тому же опять как без фильтров, попроще, надругаться таким образом над каждой записью, для которой раскручивали премию (ведь update применяется НЕ КО ВСЕЙ таблице, а к некоторой ее части). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
09.10.2003, 23:51
|
|||
|---|---|---|---|
|
|||
Неприятные особенности типа Money |
|||
|
#18+
Не дождамшись ответа, сделал так: 1)поставил Number вместо Money 2)использовал фильтр вместо запроса 3)пробежал по отфильтрованной таблице после раскрутки премии и преобразовал поле с премией так: bufer:=FloatToStrF(Prem,ffFixed,9,2), а затем Prem.Value:=StrToFloat(bufer). И стало мне счастье. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
11.10.2003, 18:17
|
|||
|---|---|---|---|
Неприятные особенности типа Money |
|||
|
#18+
Ezhov писал:имеется таблица, содержащая сведения о денежных начислениях группе сотрудников, т.н. "наряд". Нужно раскрутить на всех некую премию, разбив ее пропорционально уже имеющимся в таблице сведениям. Для этого запускается Update, который успешно отрабатывает. Все бы ничего, но поля для хранения народных финансов я соблазнился сделать типа Money. Это где у тебя таблица-то? Что-то я не нашел в Дельфях тип Money Ezhov писал:т.к. злой комп складывает не те значения типа Money, которые коварно отображаются в гриде и отчете, а нечто с 3-5 знаками после запятой, скрывающееся под их личиной (я привел Money к Str и убедился в этом). И откуда там такие значения? Как ты премию-то делишь? Может оттуда они и получаются? Потому как только во float вместо 5 может лежать 4.99999999999, а все остальные работают точно -- Tygra's -- ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=58&mobile=1&tid=2116494]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
85ms |
get topic data: |
13ms |
get forum data: |
4ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
| others: | 257ms |
| total: | 455ms |

| 0 / 0 |
