vijay_bale Ответов: 2

Артематическая ошибка переполнения


Я подключил sql-сервер другой системы благодаря originalgriff.
но когда я попытался запустить свое приложение оно подключено к этой системе SQL и появляется следующая ошибка "
Arithmetic overflow error converting numeric to data type numeric.

Если я запустил это приложение из своей системы, оно работает без каких-либо ошибок.Есть ли какое-то решение для этого?

Что я уже пробовал:

Я погуглил, но пришел с не подходящим решением

Richard MacCutchan

Каковы переменные и их значения, которые вызывают эту ошибку?

vijay_bale

Я дал строку подключения в файле appconfig, как показано ниже
< add name= " connectionstr"
параметр connectionString="пароль=test1234;сохранять сведения о безопасности=true;в идентификатор пользователя=тест;начальный каталог=inventoryDB;источник данных=м3\SQL2016"
система имя_поставщика=".Данных.В sqlclient" /&ГТ;

И я читаю это, как показано ниже

SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings ["connectionstr"].Параметр connectionString);

Когда я запустил это, databse подключается, но приходит ошибка " Ошибка арифметического переполнения преобразования numeric в тип данных numeric."

Richard MacCutchan

Извините, но это не помогает. Вам нужно использовать свой отладчик, чтобы точно определить, где происходит ошибка и каковы значения, которые ее вызывают.

Patrice T

Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.
Чтобы каждый мог обратить внимание на эту информацию.

2 Ответов

Рейтинг:
1

ZurdoDev

Решение очень простое. Ваши данные отличаются, и какое-то число слишком велико, поэтому вы получаете ошибку переполнения. Вам придется посмотреть, с какими точными данными приходится иметь дело, и исправить их.


vijay_bale

то же самое приложение с теми же данными, которые я запускаю в своей системе, и все работает нормально.

ZurdoDev

Ну, очевидно, что-то не то же самое, иначе они работали бы одинаково. Но в любом случае, мы никак не можем увидеть ваши системы, чтобы сказать вам, что отличается. Вам придется изучить структуры данных и таблиц, чтобы понять, откуда исходит ошибка. Это не так уж сложно, если вы знаете, какой sql вызывает ошибку.

Рейтинг:
0

OriginalGriff

Цитата:
то же самое приложение с теми же данными, которые я запускаю в своей системе, и все работает нормально.

Тогда вам нужно начать смотреть на то, что отличается.
Предполагая, что вы не можете использовать отладчик в системе, где он терпит неудачу, вам нужно будет вручную добавить информацию журнала в ваше приложение, чтобы сузить точное место возникновения ошибки, а затем сконцентрировать ведение журнала там, чтобы выяснить, о каких данных вы говорите и чем они отличаются от того же запуска в вашей системе.

Попробуйте войти в файл с помощью File.Приложите и сравните выходные данные двух систем: найдите, где они отличаются, и сравните это с кодом.

Мы не можем сделать ничего из этого для вас: у нас нет доступа ни к компьютеру, ни к какому-либо представлению о том, как выглядят ваш код или данные!


vijay_bale

он показывает ошибку рядом с некоторыми хранимыми процедурами, которые я использую для отображения данных и обновления некоторых данных. Ниже одна из хранимых процедур, которую я вставляю

Используйте [inventoryDB]
ГО
/ * * * * * * Объект: StoredProcedure [dbo].[StockUpdate] Дата сценария: 06-10-2017 09:44: 41 PM ******/
УСТАНОВИТЕ ANSI_NULLS ON
ГО
УСТАНОВИТЕ QUOTED_IDENTIFIER НА
ГО
Изменить процедуру [dbo].[StockUpdate]
@SearchParam VARCHAR (MAX) ="

АС
УСТАНОВИТЕ NOCOUNT ON

Объявить @SqlString VARCHAR(MAX)


SET @SqlString ='
выберите полное имя,
Идентификатор элемента,
Сумма (PurchaseQty) как [PurchaseQty],
Сумма (SalesQty) как [SalesQty]
От (
выберите полное имя,
Идентификатор элемента,
Сумма (itmqty) как [PurchaseQty],
Сумма (0.000) как [SalesQty]
из invDB с помощью(NOLOCK)
Левое соединение itemDB с(подсказку nolock) на itemDB.itmcode=invDB.Идентификатор элемента
Группы, полное имя,идентификатор элемента

СОЮЗ

выберите полное имя,
Идентификатор элемента,
Сумма (0.000) как [PurchaseQty],
Сумма (itmqty) как [SalesQty]
из salesDB с помощью(NOLOCK)
Левое соединение itemDB с(подсказку nolock) на itemDB.itmcode=salesDB.Идентификатор элемента
Группы, полное имя,идентификатор элемента)группы, полное имя,идентификатор элемента
'

Если функция ltrim (( @параметром searchparam ) ), так работает &ЛТ;&ГТ; "
НАЧАТЬ
Метод exec (@типа sqlstring + " где " + @параметром searchparam )

КОНЕЦ
ЕЩЕ
НАЧАТЬ
EXEC (@SqlString)
PRINT (@SqlString)
КОНЕЦ

Печать @типа sqlstring + " где " + @параметром searchparam

Patrice T

Воспользуйся Улучшить вопрос чтобы обновить ваш вопрос.
Чтобы каждый мог обратить внимание на эту информацию.

Atlapure Ambrish

Можете ли вы удалить sum(0.000) из обоих запросов и проверить, не выдает ли он эту ошибку после настройки запроса по мере необходимости.