Excel VBA溢出错误当试图运行SQL服务器存储过程与Int参数

问题描述:

我有一个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

我刚刚发现的问题!在数据到达数据库之前,它位于VBA代码内。该值被转换回一个int! Doh

谢谢大家的回复!