错误执行宏

时间:2018-08-16 13:59:01

标签: sql-server vba ssms

我正在尝试设置一个宏,该宏可以调用SQL来执行存储过程,但是在运行它时会不断收到is消息。我可以通过SSMS中的SQL查询执行存储过程。有什么想法吗?

错误: “应用程序为当前操作使用了错误类型的值。”在22号线的位置0

代码

Const adParamInput = &H0001 
Const adVarChar = 200
Dim strServerName
Dim strDatabase
Dim strUserName
Dim strPassword

strServerName="5.5.5.5"
strDatabase="MYDB"
strUserName="DBUSER"
strPassword="DBPASS"
strcnn="Driver={SQL Server};Server=" & strServerName & ";Database=" & strDatabase & ";Uid=" & strUsername & ";Pwd=" & strPassword & ";"
Set Conn = CreateObject("ADODB.Connection")
conn.open strcnn
Set Cmd = CreateObject("ADODB.Command")
Cmd.ActiveConnection = conn
' Set up the parameter for our Stored Procedure *** watch the line wrap ***
Cmd.Parameters.Append Cmd.CreateParameter("I_PartID", adVarChar, adParamInput , 30, "E N T E R    Y O U R    P A R T    I D")
Cmd.CommandText = "SP_UpdateUDF"
Cmd.Execute

1 个答案:

答案 0 :(得分:0)

您正在创建长度为30的adVarchar类型的参数,但传递的是长度为38的字符串。错误消息有点误导,实际上它抱怨长度。

如果您的Proc期望最多30个字符,请缩短您的字符串。否则,您可以通过

解决问题
Const pVal = "E N T E R    Y O U R    P A R T    I D"
cmd.Parameters.Append cmd.CreateParameter("I_PartID", adVarChar, adParamInput, Len(pVal), pVal)