![]() |
#1 |
Участник
|
Слишком большое число для проведения операции
Случилась страшная кака - при пересчете балансов по периодам появились суммы размер которых превышает 32 байта и аксапта не может их записать и выдает ошибку SQL
что посоветуете сделать? версия 4,0 |
|
![]() |
#2 |
Программатор
|
бежать в кадры...
![]() |
|
![]() |
#3 |
Участник
|
Ну вообще есть же страны у которых коробок спичек миллион стоит. Как то у них не переполняется ведь.
|
|
![]() |
#4 |
MCT
|
А кто мешает сделать, как курс отношения 100:1000
![]()
__________________
Axapta book for developer |
|
![]() |
#5 |
Участник
|
Вы уверены, что правильно написали? 32 байта? Может все-таки бита? Или вам не принципиально?
![]() Для числа, хранимого в 32 байтах можно учитывать и спички по 1 млн. Если мое предположение правильно, то данная проблема актуальна только для целочисленного представления данных. C уважением, Дмитрий. Последний раз редактировалось DmitryK; 17.07.2012 в 07:46. |
|
|
За это сообщение автора поблагодарили: kornix (1). |
![]() |
#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 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) А по поводу курса - уже куча операций по обычному курсу если сейчас поделить то миллион станет тыщей а старые проводки останутся миллионами |
|
![]() |
#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) ошибся |
|
![]() |
#8 |
Участник
|
Посмотрите, а нет ли значений -0 (минус ноль).
Хотя в этой таблице нет целых значений (расчетных). Мне кажется, надо понять где формируется (почему) ошибочное значение, после какой операции. Может отдебажить ее? C уважением, Дмитрий. Последний раз редактировалось DmitryK; 17.07.2012 в 12:39. |
|
![]() |
#9 |
Участник
|
Цитата:
![]() ![]() Последний раз редактировалось gl00mie; 17.07.2012 в 17:05. |
|
|
За это сообщение автора поблагодарили: Logger (2), mnt_dx (1). |
![]() |
#10 |
Участник
|
Были искусственные операции на большую сумму но тогда мы не звадумались о подобной проблеме. а ньюмерик реально не +-28знаков. мсдн врет
|
|