vba存储过程中的参数
我的代码有一些问题:vba存储过程中的参数,vba,stored-procedures,parameters,Vba,Stored Procedures,Parameters,我的代码有一些问题: Dim title, datee As String Dim ConnectionString As String Dim sPassword As String Dim sUser As String Dim sDatabase As String Dim sServer As String Dim req As String Dim Cmd1 As New ADODB.Command Dim AConn As New ADODB.Connection Dim Rst
Dim title, datee As String
Dim ConnectionString As String
Dim sPassword As String
Dim sUser As String
Dim sDatabase As String
Dim sServer As String
Dim req As String
Dim Cmd1 As New ADODB.Command
Dim AConn As New ADODB.Connection
Dim Rst As ADODB.Recordset
Dim dateee As Date
dateee = "2013-10-10"
Dim prm As ADODB.Parameter
title = Cells(1, 6).Value
datee = Cells(2, 4).Value
Range("A6:Z65500").ClearContents
title = Left(title, Len(title) - 10) + datee
Cells(1, 6).Value = title
sServer = Worksheets("BaseDeDonnees").Cells(3, 3)
sDatabase = Worksheets("BaseDeDonnees").Cells(4, 3)
sUser = Worksheets("BaseDeDonnees").Cells(5, 3)
sPassword = Worksheets("BaseDeDonnees").Cells(6, 3)
AConn.ConnectionString = "UID=" & sUser & ";PWD=" & sPassword & ";" & "DRIVER={SQL Server};Server=" & sServer & ";Database=" & sDatabase & ";"
AConn.Open
Cmd1.ActiveConnection = AConn
Cmd1.CommandText = "test"
Cmd1.CommandType = adCmdStoredProc
Set prm = Cmd1.CreateParameter("@dateMax", adDBTimeStamp, adParamInput)
Cmd1.Parameters.Append prm
Cmd1.Parameters("@dateMax").Value = dateee
Set prm = Cmd1.CreateParameter("@usrID", adInteger, adParamInput)
Cmd1.Parameters.Append prm
Cmd1.Parameters("@usrID").Value = 100768
Cmd1.Execute
AConn.Close
我收到一条错误消息:过程或函数“test”需要未提供的参数“@usrID”。我真的不知道我为什么会有这个错误,@usrID,被定义为。。。
你能帮助我吗?谢谢:)我传递给存储过程的任何参数(至少对于SQL Server而言),都是在创建参数时传入的。因此,在你的情况下,我将这样做:
Set prm = Cmd1.CreateParameter("@usrID", adInteger, adParamInput, 4, 100768)
Cmd1.Parameters.Append prm
或者如果你像我一样懒惰:
Cmd1.Parameters.Append Cmd1.CreateParameter("@usrID", adInteger, adParamInput, 4, 100768)
注意,最后一个参数是输入的大小(字节或字符串(varchars)长度),最后一个参数是传递的值
更多信息请点击此处:
您需要添加:
Cmd1.NamedParameters = True
在分配参数之前,否则它们实际上是按位置传递的。
CreateParameter(“dateMax”
..?然后prm.Value=datee
?感谢您的回答,不幸的是,我以前尝试过这个,但它不起作用…我在这些行中有相同的错误消息:Cmd1.parameters.Append Cmd1.CreateParameter(“@dateMax”,adDBTimeStamp,adParamInput,0,dateee)Cmd1.Parameters.Append Cmd1.CreateParameter(“@usrID”,adInteger,adParamInput,10100768)我将看到您的链接。