2017-02-20 9 views
1

У меня есть Идентификатор заказа 32777, объявленный как Длинный тип данных в excel. Im пытается передать его в хранимую процедуру с помощью следующей строки кода:Ошибка переполнения Excel VBA при попытке запуска SQL-хранимой процедуры с параметром Int

RunStoredProcedure "dbo.updateinventory", CLng(OrderID), "Orderid" 

Я получаю следующую ошибку, когда я пытаюсь, несмотря включая линию CLng function.The выделенную отладчик выше один:

enter image description here

Оригинальная хранимая процедура показана ниже.

@OrderId Int 
as 
Begin 
    update P 
Set 
    P.Available = P.Available - Q.QuantityOrdered, 
From 
Products P join 
(Select ProductID, sum(Quantity) from OrderDetails where OrderID = @OrderId Group By ProductId) Q 
on P.ID = Q.ProductID 

End 

Я попытался изменить тип данных переменной @Orderid к BigInt на хранимой процедуре, но все еще получаю ошибку.

EDIT: Я изменил тип данных столбца OrderID в таблице orderdetails из int в bigint, но все равно получаю ошибку.

Может ли кто-нибудь помочь, пожалуйста?

ура

+0

Если произошла ошибка, нажмите [Отладка]. Отобразится код, а желтая выделенная строка кода будет выделена желтым цветом. Теперь наведите указатель мыши на 'OrderID' в этой строке. Что отображается в качестве значения «OrderID»? –

+0

его 32777. cheers – Nick

+1

Я бы предположил, что эта ошибка не исходит из параметра, а где-то изнутри вашего SP. Если код, который вы отправили, является вашим исходным кодом, здесь что-то не так: ваша 'сумма (количество)' не имеет псевдонима, но вы, похоже, называете это «Q.QuatityOrdered». – Shnugo

ответ

0

Я только что нашел проблему! Он находится в коде VBA до того, как данные попадают в базу данных. Значение возвращается к int! Doh

Спасибо всем за ваши ответы!