把你的表结构列出来,也许一句SQL查询就能帮你搞定。

解决方案 »

  1.   

    @order_id=SO200311220005
    @order_id='002'
    @amnt=3
    @over='no'@over作为输出参数不虽要传值!
      

  2.   

    我在查询分析器中可以返回正确的结果,但是在vb中就不行了,我都输入了上面的调试数据。vb中他就是不出正确的结果。急死了。
    表结构:
    订单明细:
    订单号       货品编号    数量         收货数量      金额        备注
    ordeID_vch mateID_vch amount_num getAmnt_num sumItm_num Re_vch收货单明细:
    收货单号       货品编号    数量        金额          备注
    stocID_vch mateID_vch amount_num sumItm_num  re_vch
      

  3.   

    你的存储过程没问题的,肯定是你前天调用的问题啦在vb中,需要使用command.parameters.item(1)="SO200311220005"
    command.parameters.item(2)="002"
    command.parameters.item(3)="3"
    command.execute(你的存储过程名)
    @over=command.parameters.item(4)来得到输出的参数值。大概就是这个意思,具体我记不太清楚了,你试试吧。
      

  4.   

    第四个参数不需要给值的,只要把希望保存传出参数的变量放在那里就可以了。在VB中是怎么调用,我就不是很清楚了。应该也不用给值的。还有在你的存储过程里最好加上return @over
    .
      

  5.   

    @over作为输出参数不虽要传值!
      

  6.   

    With com
            .CommandText = "po_oc_stock_compare_amount"
            .CommandType = adCmdStoredProc
            .ActiveConnection = gCnn
            '.Parameters.Refresh
            .Parameters.Append .CreateParameter("order_id", adVarChar, adParamInput, 50, txtStocID_vch)
            .Parameters.Append .CreateParameter("mate_id", adVarChar, adParamInput, 50)
            .Parameters.Append .CreateParameter("amount", adVarChar, adParamInput, 50)
            .Parameters.Append .CreateParameter("is_over", adVarChar, adParamOutput, 50, "")
            
        End With
    com("mate_id")="SO200311220005"                com("amount") = "6" 
                    com("is_over") = "yes"
                    com.Execute
                    If com("is_over") = "yes" Then
                        MsgBox com("mate_id") & vbCr & "收货数量大于订单未交数量", vbOKOnly, "增加单据"--本来会执行这个语句,可就是不执行,都一天了,他不累我也累了。
                        GoTo Nomal_err
                    End If
    大家快帮忙看看
      

  7.   

    写错了:
    com("mate_id")="002"
      

  8.   

    功能:
    比较收货的数量是否大于订单中还没有收的数量。
    ----------------------------------------------------
    是不是应该求“收货的数量是否大于订单数量”才有意义?以下是SQL查询代替存诸过程的语句:slect
      a.mateID_vch, O_qty-iif(isnull(D_qty,0)) as 订单余数 
    from
      (select mateID_vch, sum(amount_num) as O_qty from 订单明细 group by 
       matchID_vch) a 
       left join 
      (select mateID_vch, sum(amount_num) as D_qty from 收货单明细 group by 
       mateid_vch) b 
       on
       a.mateid_vch=b.mateid
    另,你的订单明细中“收货数量”不必要吧,还有,两表中的金额,应该改成单价更好些。