Public Function qgd_AddDetail(ByVal strdh As String, _
                            ByVal strclmc As String, _
                            ByVal strclgg As String, _
                            ByVal strsl As String, _
                            ByVal strshuoming As String, _
                            ByRef strautoid As String) As Boolean
    'On Error GoTo ErrHandle
    Dim iReturn As Integer
    Dim strreturn As String    If Trim(strdh) = "" Or Trim(strclmc) = "" Or Trim(strsl) = "" Then
        Exit Function
    End If   
    Set objCmd = New ADODB.Command
    objCmd.ActiveConnection = conn    Set objPrm = New ADODB.Parameter    objCmd.CommandText = "qgd_addrecord"      '存贮过程名:qgd_addrecord
    objCmd.CommandType = adCmdStoredProc
    '请购单号
    Set objPrm = objCmd.CreateParameter("strqgdh", adVarChar, adParamInput, 12)
    objCmd.Parameters.Append objPrm    '材料名称
    Set objPrm = objCmd.CreateParameter("strclmc", adVarChar, adParamInput, 100)
    objCmd.Parameters.Append objPrm    '材料规格
    Set objPrm = objCmd.CreateParameter("strclgg", adVarChar, adParamInput, 100)
    objCmd.Parameters.Append objPrm
    
    '数量
    Set objPrm = objCmd.CreateParameter("strsl",adNumeric, adParamInput, 50)
    objCmd.Parameters.Append objPrm
    
    '说明
    Set objPrm = objCmd.CreateParameter("strsm", adVarChar, adParamInput, 500)
    objCmd.Parameters.Append objPrm    '返回autoid
    Set objPrm = objCmd.CreateParameter("strautoid", adVarChar, adParamOutput, 50)
    objCmd.Parameters.Append objPrm    objCmd.Parameters("strqgdh") = strdh
    objCmd.Parameters("strclmc") = strclmc
    objCmd.Parameters("strclgg") = strclgg
    objCmd.Parameters("strsl") = Val(strsl)
    objCmd.Parameters("strsm") = strshuoming
        
    objCmd.Execute    '将存贮过程返回值传给参数,以得到返回值
    strautoid = objCmd.Parameters("strautoid")    If strautoid = "" Then
        qgd_AddDetail = False
    Else
        qgd_AddDetail = True
    End If    Set objCmd = Nothing
    Set objPrm = Nothing
    Exit FunctionErrHandle:
    MsgBox Err.Description
    Err.Clear
End Function

解决方案 »

  1.   

        '数量
        Set objPrm = objCmd.CreateParameter("strsl",adNumeric, adParamInput, 50)
        objCmd.Parameters.Append objPrm
    -------------------------
    就是因为上面的语句不对,我将 adnumeric改成 adsingle就不报错了.
    这是为什么呢?
    数据库中的数量字段是 numeric(18,2)型的.数据库为sql server 2000 
      

  2.   

    [Quote=MSDN:]如果在 Type 参数中指定数字型数据类型(adNumeric 或 adDecimal),也必须设置 NumericScale 和 Precision 属性。[/Qutote]
    而浮点类型 adSingle 是不需要设置其它属性的。