CreateParameter 方法
      使用指定属性创建新的 Parameter 对象。语法Set parameter = command.CreateParameter (Name, Type, Direction, Size, Value)返回值返回 Parameter 对象。参数Name   可选,字符串,代表 Parameter 对象名称。Type   可选,长整型值,指定 Parameter 对象数据类型。关于有效设置请参见 Type 属性。Direction   可选,长整型值,指定 Parameter 对象类型。关于有效设置请参见 Direction 属性。Size   可选,长整型值,指定参数值最大长度(以字符或字节数为单位)。Value   可选,变体型,指定 Parameter 对象的值。说明使用 CreateParameter 方法可用指定的名称、类型、方向、大小和值创建新的 Parameter 对象。在参数中传送的所有值都将写入相应的 Parameter 属性。该方法无法自动将 Parameter 对象追加到 Command 对象的 Parameter 集合,这样就可以设置附加属性。如果将 Parameter 对象追加到集合,则 ADO 将使该附加属性的值生效。如果在 Type 参数中指定可变长度的数据类型,那么在将它追加到 Parameters 集合之前必须传送 Size 参数或者设置 Parameter 对象的 Size 属性;否则将产生错误。

解决方案 »

  1.   

    使用 Append 和 CreateParameter 方法执行具有输入参数的存储过程。Public Sub AppendX()   Dim cnn1 As ADODB.Connection
       Dim cmdByRoyalty As ADODB.Command
       Dim prmByRoyalty As ADODB.Parameter
       Dim rstByRoyalty As ADODB.Recordset
       Dim rstAuthors As ADODB.Recordset
       Dim intRoyalty As Integer
       Dim strAuthorID As String
       Dim strCnn As String   ' 打开连接。
       Set cnn1 = New ADODB.Connection
       strCnn = "Provider=sqloledb;" & _
          "Data Source=srv;Initial Catalog=pubs;User Id=sa;Password=; "
       cnn1.Open strCnn
       cnn1.CursorLocation = adUseClient
          
       ' 使用一个参数打开命令对象。
       Set cmdByRoyalty = New ADODB.Command
       cmdByRoyalty.CommandText = "byroyalty"
       cmdByRoyalty.CommandType = adCmdStoredProc
       
       ' 获取参数值并追加参数。
       intRoyalty = Trim(InputBox("Enter royalty:"))
       Set prmByRoyalty = cmdByRoyalty.CreateParameter("percentage", _
          adInteger, adParamInput)
       cmdByRoyalty.Parameters.Append prmByRoyalty
       prmByRoyalty.Value = intRoyalty   ' 通过执行命令创建记录集。
       Set cmdByRoyalty.ActiveConnection = cnn1
       Set rstByRoyalty = cmdByRoyalty.Execute
       
       ' 打开 Authors 表以获取作者姓名进行显示。
       Set rstAuthors = New ADODB.Recordset
       rstAuthors.Open "authors", cnn1, , , adCmdTable
       
       ' 打印记录集中的当前数据,从 Authors 表中添加作者姓名。
       Debug.Print "Authors with " & intRoyalty & " percent royalty"
       Do While Not rstByRoyalty.EOF
          strAuthorID = rstByRoyalty!au_id
          Debug.Print "   " & rstByRoyalty!au_id & ", ";
          rstAuthors.Filter = "au_id = '" & strAuthorID & "'"
          Debug.Print rstAuthors!au_fname & " " & rstAuthors!au_lname
          rstByRoyalty.MoveNext
       Loop   rstByRoyalty.Close
       rstAuthors.Close
       cnn1.CloseEnd Sub
      

  2.   

    200 代表参数类型为: adVarChar 字符串值
    1   代表参数为:     AdParamInput 默认值。指示输入参数。 
    第四个参数,代表参数的长度.