2017-02-20 27 views
1

我有一個OrderID 32777宣佈爲數據類型在Excel中。我試着將它與下面的代碼行傳遞到存儲過程: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,但仍然出現錯誤。

編輯:我已經將orderdetails表中的OrderID列的數據類型從int更改爲bigint,但仍然收到錯誤。

任何人都可以協助嗎?

歡呼

+0

如果發生錯誤,請單擊[調試]。代碼將被顯示,並且錯誤的代碼行會突出顯示。現在將鼠標指針懸停在該行的'OrderID'上。那麼什麼顯示爲'OrderID'的值? –

+0

其32777.乾杯 – Nick

+1

我假設,這個錯誤不是來自參數,而是來自SP內部的某個地方。如果您發佈的代碼是您的原始代碼,則此處出現問題:您的'sum(Quantity)'沒有別名,但您似乎將其稱爲'Q.QuatityOrdered'。 – Shnugo

回答

0

我剛剛發現的問題!在數據到達數據庫之前,它位於VBA代碼內。該值被轉換回一個int! Doh

謝謝大家的回覆!