存储过程:
CREATE PROCEDURE CK_RuRepotrt
@GetWhere varchar(255)
AS 
SELECT tblJinCang.JC_ID,tblJC_item.wupinID,wupinName,wupinNo,JCi_Date,JCI_Num,JCI_money,gongyingID,TYPE 
FROM tblJinCang 
INNER JOIN (tblJC_Item INNER JOIN tblITemSet ON tblJC_ITem.wupinID=tblitemset.wupinID)
ON tblJC_Item.jc_ID=tblJinCang.JC_id +
@GetWhere ORDER BY wupinNO
RETURN
GO
VB调用:
Private Sub mLoadtoPrintlsv()
On Error GoTo mErr
    Dim mRst As New ADODB.Recordset
    Dim mCmd As New ADODB.Command
    Dim mPrim As New ADODB.Parameter    mPrim.Type = adVarChar
    mPrim.Value = mGetWhere 'mGetWHERE=""    mPrim.Size = 255
    mPrim.Direction = adParamInput
    
    mCmd.CommandText = "CK_RuRepotrt"
    mCmd.CommandType = adCmdStoredProc
    mCmd.Parameters.Append mPrim
    
    mCmd.ActiveConnection = mConnectString
    出错:提示将VarChat转换成数据类型numeric是后发生算术益出错误
    Set mRst = mCmd.Execute"

解决方案 »

  1.   

    存储过程错了:
    CREATE PROCEDURE CK_RuRepotrt
    @GetWhere varchar(255)
    AS 
    declare @sql varchar(2000)
    set @sql='
    SELECT tblJinCang.JC_ID,tblJC_item.wupinID,wupinName,wupinNo,JCi_Date,JCI_Num,JCI_money,gongyingID,TYPE 
    FROM tblJinCang 
    INNER JOIN (tblJC_Item INNER JOIN tblITemSet ON tblJC_ITem.wupinID=tblitemset.wupinID)
    ON tblJC_Item.jc_ID=tblJinCang.JC_id '+
    @GetWhere+' ORDER BY wupinNO'
    GO
      

  2.   

    更正:
    CREATE PROCEDURE CK_RuRepotrt
    @GetWhere varchar(255)
    AS 
    declare @sql varchar(2000)
    set @sql='
    SELECT tblJinCang.JC_ID,tblJC_item.wupinID,wupinName,wupinNo,JCi_Date,JCI_Num,JCI_money,gongyingID,TYPE 
    FROM tblJinCang 
    INNER JOIN (tblJC_Item INNER JOIN tblITemSet ON tblJC_ITem.wupinID=tblitemset.wupinID)
    ON tblJC_Item.jc_ID=tblJinCang.JC_id '+
    @GetWhere+' ORDER BY wupinNO'
    exec(@sql)
    GO
      

  3.   

    '错误发生在tblJinCang.JC_id + @GetWhere 这句,
    你怎么能将一个字符类型和一个数字类型相加呢?
    必须将你的参数类型改变成数字类型,或者做一下转换(必须保证能转换,而且不溢出)