以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  关于行数据设为0的问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=192176)

--  作者:scofields
--  发布时间:2024/6/1 13:43:00
--  关于行数据设为0的问题
以下代码我的目标是实现当下达计划后,自动将T_采购单的Current("分配数量")设为0,避免重复下计划,但我尝试几次后,发现根本没有用,不知道是哪里出问题,请版主修改:
 Case "计划下达"
        Tables("T_采购单").Current.Load
        If Tables("T_采购单").Current("分配数量")>0 Then
            cmd.CommandText = "EXEC P_采购分配扣款 ?"
            cmd.Parameters.Add("@采购ID",Tables("T_采购单").Current("采购ID"))
            Dim dt As DataTable = cmd.ExecuteReader
            Dim id As Integer = DataTables("T_计划单").Compute("Max(提货单编号)")
            Dim Filter As String = "[提货单编号] > " & id
            DataTables("T_计划单").AppendLoad(Filter, False)
            With  Tables("调度分配_Table2")
                .Position = .Rows.Count + 1
            End With
            If Tables("T_计划单").Current("下单单位")="" Then ‘将存储过程没有执行的地方通过事件执行
                Tables("T_计划单").Current("下单单位")= Tables("T_采购单").Current("采购单位")
                Tables("T_计划单").Current("下单单位ID")=Tables("T_采购单").Current("采购单位ID")
                Tables("T_采购单").Current("分配数量")=0 \'下达计划后将分配数量设为0,避免重复下计划
            Else
                Return
            End If
        Else
            MessageBox.show("分配数量不允许为0,或已经分配,不允许重复分配,请重新分配数量","提示",MessageBoxButtons.OK)
            Return
        End If
End Select

--  作者:有点蓝
--  发布时间:2024/6/1 13:57:00
--  
代码在什么事件的?

调试
    Case "计划下达"
        Dim r As Row = Tables("T_采购单").Current
        msgbox(r("采购ID") & "," & r("分配数量"))
        r.Load
        msgbox(r("采购ID") & "," & r("分配数量"))
        If r("分配数量") > 0 Then
            cmd.CommandText = "EXEC P_采购分配扣款 ?"
            cmd.Parameters.Add("@采购ID", r("采购ID"))
            Dim dt As DataTable = cmd.ExecuteReader
            Dim id As Integer = DataTables("T_计划单").Compute("Max(提货单编号)")
            Dim Filter As String = "[提货单编号] > " & id
            DataTables("T_计划单").AppendLoad(Filter, False)
            msgbox("AppendLoad OK")
            With Tables("调度分配_Table2")
                .Position = .Rows.Count
            End With
            If Tables("T_计划单").Current.IsNull("下单单位") Then \'将存储过程没有执行的地方通过事件执行
                Tables("T_计划单").Current("下单单位") = r("采购单位")
                Tables("T_计划单").Current("下单单位ID") = r("采购单位ID")
                r("分配数量") = 0 \'下达计划后将分配数量设为0,避免重复下计划
                msgbox("分配数量=" & r("分配数量"))
            Else
                msgbox("Return 1 OK")
                Return
            End If
        Else
            MessageBox.show("分配数量不允许为0,或已经分配,不允许重复分配,请重新分配数量", "提示", MessageBoxButtons.OK)
            Return
        End If
End Select


--  作者:scofields
--  发布时间:2024/6/1 14:53:00
--  
我明白了,位置放错了,我调整了,现在好了。感谢版主。