我想在VB中输出存储过程的输出参数的值,例如
Set rs = cn.Execute("exec judge 'CG%','CGTH%','" & txtID.Text & "','" & .TextMatrix(i, 1) & "'," & Int(.TextMatrix(i, 3)) & ",'" & message & " output'")
message表示要输出的参数,但在程序执行的过程中,存储过程并没有赋值给message,不知何故,请各位大侠指点,谢啦!

解决方案 »

  1.   

    那应该怎么使用,我把message定义parameter后,系统就会提示“对象变量或with变量未设置”,
    不知为什么,请大侠指教,谢啦
      

  2.   

    给你个小例子
    private sub Command1_click()
        If MsgForQuestion("您真的要对当前采购单进行结案吗?") = False Then Exit Sub
        Dim cm As New ADODB.Command, par As ADODB.Parameter
        On Error GoTo ErrHandle
        cn.BeginTrans
        cm.ActiveConnection = cn
        cm.CommandType = adCmdStoredProc
        cm.CommandText = "CGOk"
        Set par = cm.CreateParameter("P1", adBSTR, adParamInput, Len(Me.TxtQgdh.Text), Me.TxtQgdh.Text)
        cm.Parameters.Append par
        Set par = cm.CreateParameter("P2", adBSTR, adParamOutput, 50)
        cm.Parameters.Append par
        cm.Execute
        cn.CommitTrans
        GoTo ExitHandle
    ErrHandle:
        cn.RollbackTrans
    ExitHandle:
        MsgForInfo cm.Parameters("P2").Value
    end sub
    -----------------------存储过程----------------------------------
    CREATE  proc CGOk @cgm_cgdh varchar(10),@ok Varchar(50) Output
    as
    Declare @zt Char(1),@cgm_sumje numeric(18, 2),
    @fkm_sumfkje numeric(18,2)select @zt=cgm_zt from cgm_mstr where cgm_cgdh=@cgm_cgdh
    if @zt='1'
    Begin
    set @ok='此需求单尚未结转,请先结转再行结案!'
    Raiserror('此需求单尚未结转,请先结转再行结案!',16,-1)
    Return
    Endif @zt='3'
    Begin
    set @ok='此采购单已取消,不能结案!'
    Raiserror('此采购单已取消,不能结案!',16,-1)
    Return
    Endif @zt='4'
    Begin
    set @ok='此采购单已结案,不能结案!'
    Raiserror('此采购单已结案,不能结案!',16,-1)
    Return
    Endselect @cgm_sumje = cgm_sumje from cgm_mstr where cgm_cgdh=@cgm_cgdh
    select @fkm_sumfkje= sum(fkd_fkje) from fkm_mstr 
    inner join fkd_det on fkm_fkdh=fkd_fkdh
    where fkm_cgdh=@cgm_cgdhif @fkm_sumfkje < @cgm_sumje
    Begin
    set @ok='此采购单付款尚未完毕,不能结案!'
    Raiserror('此采购单付款尚未完毕,不能结案!',16,-1)
    Return
    Endupdate cgm_mstr set cgm_zt='4' where cgm_cgdh=@cgm_cgdh
    update fkm_mstr set fkm_zt='2' where fkm_cgdh=@cgm_cgdh
    update fkd_det set fkd_zt='2' from fkd_det inner join fkm_mstr on fkd_fkdh=fkm_fkdh where fkm_cgdh=@cgm_cgdhSet @ok='恭喜、恭喜,结案成功了!(good)'