16.07.2012, 17:18 | #1 |
Участник
|
Слишком большое число для проведения операции
Случилась страшная кака - при пересчете балансов по периодам появились суммы размер которых превышает 32 байта и аксапта не может их записать и выдает ошибку SQL
что посоветуете сделать? версия 4,0 |
|
16.07.2012, 17:40 | #2 |
Программатор
|
бежать в кадры... А на самом деле интересная ситуация.... Я даже не знаю... Может завести ряд переменных и там хранить слагаемые.
|
|
16.07.2012, 18:07 | #3 |
Участник
|
Ну вообще есть же страны у которых коробок спичек миллион стоит. Как то у них не переполняется ведь.
|
|
16.07.2012, 18:14 | #4 |
MCT
|
А кто мешает сделать, как курс отношения 100:1000
__________________
Axapta book for developer |
|
17.07.2012, 07:33 | #5 |
Участник
|
Вы уверены, что правильно написали? 32 байта? Может все-таки бита? Или вам не принципиально? )
Для числа, хранимого в 32 байтах можно учитывать и спички по 1 млн. Если мое предположение правильно, то данная проблема актуальна только для целочисленного представления данных. C уважением, Дмитрий. Последний раз редактировалось DmitryK; 17.07.2012 в 07:46. |
|
|
За это сообщение автора поблагодарили: kornix (1). |
17.07.2012, 11:54 | #6 |
Участник
|
ну биты биты )) не влазит вообщем
Error Сообщение (18:53:48) Невозможно создать запись в Операции по сальдо ГК (LedgerBalancesTrans). Номер счета : 51.02, 30.06.2012. База данных SQL обнаружила ошибку. Info Сообщение (18:53:48) Описание ошибки SQL: [Microsoft][ODBC SQL Server Driver]Числовое значение выходит за пределы допустимого диапазона Info Сообщение (18:53:48) Оператор SQL: INSERT INTO LEDGERBALANCESTRANS (ACCOUNTNUM,TRANSDATE,DEBITMST,CREDITMST,DEBITOPRMST,CREDITOPRMST,DEBITTAXMST,CREDITTAXMST,PERIODCODE,DEBITMSTSECOND,CREDITMSTSECOND,DEBITOPRMSTSECOND,CREDITOPRMSTSECOND,DEBITTAXMSTSECOND,CREDITTAXMSTSECOND,QTY,SYSTEMGENERATEDULTIMO,LEDGERBALANCESVARIANT,DATAAREAID,RECVERSION,RECID) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) А по поводу курса - уже куча операций по обычному курсу если сейчас поделить то миллион станет тыщей а старые проводки останутся миллионами |
|
17.07.2012, 12:32 | #7 |
Мрачный тип
|
Есть мнение, которое может быть ошибочным, но тем не менее ...
maxkov, а откуда дровишки про 32-бита ? Вы уверены, что превышение именно в сумме? 32 бита - это обычный размер real на SQL, однако этот тип не применяется для хранения сумм для DAX, cуммы в DAX - это 13-байтовый Numeric(28,12), могущий хранить величины в пределах плюс/минус 10^28 - 1 (бессчетные окулиарды - как их превысить, ума не приложу). Кроме того, 32-бита - это обычный int (который тоже является числовым значением, о котором говорится в ошибке). Данному типу у нас в приведенном запросе соответствуют:
Нет ли в данном случае попыток лечения китайца от желтухи и поиска черной кошки в темной комнате? Можно трэйс запроса со стороны SQL-сервера в студию взамен корявого аксаптовского ? Ибо есть серьезные подозрения (если Ваша правда про ругань именно на 32-хбитное число), что дело не в сумме, а int-овских полях
__________________
Мы летаем, кружимся, нагоняем ужасы ... Последний раз редактировалось TasmanianDevil; 17.07.2012 в 12:57. Причина: В разрядности максимального для Numeric(28,12) ошибся |
|
17.07.2012, 12:36 | #8 |
Участник
|
Посмотрите, а нет ли значений -0 (минус ноль).
Хотя в этой таблице нет целых значений (расчетных). Мне кажется, надо понять где формируется (почему) ошибочное значение, после какой операции. Может отдебажить ее? C уважением, Дмитрий. Последний раз редактировалось DmitryK; 17.07.2012 в 12:39. |
|
17.07.2012, 17:02 | #9 |
Участник
|
Цитата:
Последний раз редактировалось gl00mie; 17.07.2012 в 17:05. |
|
|
За это сообщение автора поблагодарили: Logger (2), mnt_dx (1). |
20.07.2012, 12:32 | #10 |
Участник
|
Были искусственные операции на большую сумму но тогда мы не звадумались о подобной проблеме. а ньюмерик реально не +-28знаков. мсдн врет
|
|