Rss & SiteMap
Foxtable(狐表) http://www.foxtable.com
下载信息 [文件大小: 下载次数: ] | |
![]() |
表中有代码如下:
Dim dr As DataRow = e.DataRow
Select Case e.DataCol.Name
Case "类别"
If dr.IsNull("任务单要求完成时间") = False And dr("类别") = "成品" Then
dr("最后入库时间") =CDate(dr("任务单要求完成时间").AddDays(-3))
End If
Case "最后入库时间"
dr("计划开始生产时间") = CDate(dr("最后入库时间")).AddDays(-dr("生产所需天数"))
Case "计划开始生产时间"
If dr.IsNull("计划开始生产时间") = False Then
dr("第一批入库时间") = CDate(dr("计划开始生产时间")).AddDays(+dr("周期"))
Dim ab As Byte = dr("级别") + 1
Dim dr2,dr3,dr4 As DataRow
Dim Filter As String = "生产任务单= '" & dr("生产任务单") & "'and 级别 = '" & ab & "'"
Dim Filter1 As String = "生产任务单= '" & dr("生产任务单") & "'and 物料型号= '" & dr("物料型号") & "' and 级别 = '" & ab & "' "
dr3 = DataTables("表A").find(Filter1)
If dr3 IsNot Nothing Then
dr3("最后入库时间") = dr("计划开始生产时间")
Dim drs As List(Of DataRow) = DataTables("表A").Select(Filter)
For Each rd As DataRow In drs
rd("最后入库时间") = dr("计划开始生产时间")
Next
End If
End If
End Select
希望 "计划开始生产时间" 这个发生变化后,能全部自动计算,,,,,
现在的情况是, 不能自动计算,按重置后,才会计算...
狐爸,你看
Case "最后入库时间"
dr("计划开始生产时间") = CDate(dr("最后入库时间")).AddDays(-dr("生产所需天数"))
Case "计划开始生产时间"
If dr.IsNull("计划开始生产时间") = False Then
dr("第一批入库时间") = CDate(dr("计划开始生产时间")).AddDays(+dr("周期"))
Dim ab As Byte = dr("级别") + 1
Dim dr2,dr3,dr4 As DataRow
Dim Filter As String = "生产任务单= '" & dr("生产任务单") & "'and 级别 = '" & ab & "'"
Dim Filter1 As String = "生产任务单= '" & dr("生产任务单") & "'and 物料型号= '" & dr("物料型号") & "' and 级别 = '" & ab & "' "
dr3 = DataTables("表A").find(Filter1)
If dr3 IsNot Nothing Then
dr3("最后入库时间") = dr("计划开始生产时间")
Dim drs As List(Of DataRow) = DataTables("表A").Select(Filter)
For Each rd As DataRow In drs
rd("最后入库时间") = dr("计划开始生产时间")
Next
End If
End If
先通过 Case "计划开始生产时间" 中的计算,得到另一行 dr3("最后入库时间") 的值.....这个时候 Case "最后入库时间" 代码又被触 动,,,计算又得出 dr("计划开始生产时间") 的值,,,,然后又触动 Case "计划开始生产时间"
这样反反复复计算,最后的结果,是所有的行 计划开始生产时间、第一批入库时间、最后入库时间 都会有内容...
为什么我现在只能自动计算出第一行?其它行不连续计算下去??
先中 计划开始生产时间 列, 按重置按钮后,又能全部计算出来...
我不想用重置按钮,因为表中有很多行,有些任务单以前已经生产完成,如果重置,所以的行都会刷新,那样会影响到其它已经OK了的数据.
1、提问最好用table文件,而不是foxdb文件,这样会有更多的人帮助你。
2、其实我在第一行粘贴成品列,所有行的计划开始生产时间、第一批入库时间、最后入库时间内容都出来了的
懂了.
我是直接把 级别,编码,型号,类型四列都剪切掉,然后粘贴....我把粘贴的实际次序给忘了..
粘贴是从上至下...也就是说当粘贴第一行的时候,下面所有内容都是空白,所以不会计算了...
而其它行中 类别列中的内容,又不是成品,所以不会计算,,,只有成品那一行才有计算了.
谢谢狐爸.C版,,,
是我逻辑错误不是代码问题...
我不想用重置按钮,因为表中有很多行,有些任务单以前已经生产完成,如果重置,所以的行都会刷新,那样会影响到其它已经OK了的数据.
可以做个逻辑列,已经完成的行:True , DataColChanged中代码重置的时候,排除这些True的行···
然后 再类别列输入成品 ;
狐爸,,有什么办法省约这一步.....让它全部都自动计算.
下载信息 [文件大小: 下载次数: ] | |
![]() |
把级别倒着来可以计算出来...我想顺着来..顺着查看的时候,好看一些.
如果真没办法了,我就倒着来吧