Rss & SiteMap
Foxtable(狐表) http://www.foxtable.com
表中的代码如下:
Dim dr As DataRow = e.DataRow
Select Case e.DataCol.Name
Case "单价","系数"
dr("本工序成本") = dr("单价") * dr("系数")
Case "本工序成本"
If dr.IsNull("单价") Then
dr("累计成本") = Nothing
Else
Dim ab As Byte = dr("加工级别") + 1
Dim dr2,dr3,dr4 As DataRow
Dim Filter As String = "成品型号= '" & dr("成品型号") & "' And 物料型号 = '" & dr("物料型号") & "' and 加工级别 = '" & ab & "'"
dr2 = DataTables("表A").find(Filter)
If dr("类别") = "成品" Then
dr("累计成本") = DataTables("表A").Compute("Sum(累计成本)","[成品型号] = '" & dr("成品型号") & "' and [加工级别] = '" & ab & "'") + dr("本工序成本")
Else
If dr2 Is Nothing Then
dr("累计成本") = dr("本工序成本")
Else
dr("累计成本") = dr("本工序成本") + dr2("累计成本")
End If
End If
End If
Case "累计成本"
DataTables("表A").DataCols("本工序成本").RaiseDataColChanged()
End Select
有问题的代码
Case "累计成本"
DataTables("表A").DataCols("本工序成本").RaiseDataColChanged()
看起来所有代码都没有问题,但是如果表格有上万行的时候,文件就会。。。。。
我想要的效果是:当表格中某一行的 “本工序成本” 发生变化时,本行所属的成品型号 的累计成本,自动累加。
下载信息 [文件大小: 下载次数: ] | |
![]() |
RaiseDataColChanged也是可以设置条件的,只针对符合条件的行触发
Case "累计成本"
DataTables("表A").DataCols("本工序成本").RaiseDataColChanged()
改:
Case "累计成本"
Dim ab As Byte = dr("加工级别") - 1
if dr(“类别”) = “原材料”or dr("类别") = "自制件" then
Dim Filter As String = "成品型号= '" & dr("成品型号") & "' And 物料型号 = '" & dr("物料型号") & "' and 加工级别 = '" & ab & "'"
DataTables("表A").DataCols("本工序成本").RaiseDataColChanged(Filter)
else
Dim Filter1 As String = "成品型号= '" & dr("成品型号") & "' and 加工级别 = '" & ab & "'"
DataTables("表A").DataCols("本工序成本").RaiseDataColChanged(Filter1)
end if
我已填写了条件,,当发生变化后,Case "累计成本" 怎么不计算呢?
我想要的效果是:当表格中某一行的 “本工序成本” 发生变化时,本行所属的成品型号 的累计成本,自动累加。
应该: Case "本工序成本" 再: DataTables("表A").DataCols("累计成本").RaiseDataColChanged(Filter) 吧