以下代码我的目标是实现当下达计划后,自动将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
代码在什么事件的?
调试
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
我明白了,位置放错了,我调整了,现在好了。感谢版主。