Foxtable(狐表)用户栏目专家坐堂 → 请教 代码为什么不自动计算, 单击重置后,才计算


  共有11672人关注过本帖树形打印复制链接

主题:请教 代码为什么不自动计算, 单击重置后,才计算

帅哥哟,离线,有人找我吗?
卟离卟弃
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1181 积分:8108 威望:0 精华:1 注册:2009/1/17 10:52:00
请教 代码为什么不自动计算, 单击重置后,才计算  发帖心情 Post By:2010/9/24 19:11:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:自动计算.zip

表中有代码如下:

 

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

 

希望 "计划开始生产时间" 这个发生变化后,能全部自动计算,,,,,

现在的情况是,   不能自动计算,按重置后,才会计算...


 回到顶部
帅哥哟,离线,有人找我吗?
czy
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33945 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2010/9/24 20:32:00 [只看该作者]

我测试可以啊。

 回到顶部
帅哥哟,离线,有人找我吗?
卟离卟弃
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1181 积分:8108 威望:0 精华:1 注册:2009/1/17 10:52:00
  发帖心情 Post By:2010/9/25 8:22:00 [只看该作者]

C版,你把类别列全部剪切掉,然后把日期全都删除,,,,,再粘贴 类别列,,,,,你看看,计划日期能不能自动出来(所有行)

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/9/25 9:03:00 [只看该作者]

我删除第一行的类别、计划开始生产时间、第一批入库时间、最后入库时间四列内容,然后再类别列输入成品,后三列自动计算得出了。

 回到顶部
帅哥哟,离线,有人找我吗?
卟离卟弃
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1181 积分:8108 威望:0 精华:1 注册:2009/1/17 10:52:00
  发帖心情 Post By:2010/9/25 10:44:00 [只看该作者]

狐爸,你看

 

    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了的数据.


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/9/25 10:49:00 [只看该作者]

1、提问最好用table文件,而不是foxdb文件,这样会有更多的人帮助你。

 

2、其实我在第一行粘贴成品列,所有行的计划开始生产时间、第一批入库时间、最后入库时间内容都出来了的


 回到顶部
帅哥哟,离线,有人找我吗?
卟离卟弃
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1181 积分:8108 威望:0 精华:1 注册:2009/1/17 10:52:00
  发帖心情 Post By:2010/9/25 11:03:00 [只看该作者]

懂了.

 


图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

 

 

我是直接把  级别,编码,型号,类型四列都剪切掉,然后粘贴....我把粘贴的实际次序给忘了..

 

粘贴是从上至下...也就是说当粘贴第一行的时候,下面所有内容都是空白,所以不会计算了...

  而其它行中  类别列中的内容,又不是成品,所以不会计算,,,只有成品那一行才有计算了.

 

 

谢谢狐爸.C版,,,

 

是我逻辑错误不是代码问题...


 回到顶部
帅哥哟,离线,有人找我吗?
mr725
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2010/9/25 11:11:00 [只看该作者]

以下是引用卟离卟弃在2010-9-25 10:44:00的发言:

 

我不想用重置按钮,因为表中有很多行,有些任务单以前已经生产完成,如果重置,所以的行都会刷新,那样会影响到其它已经OK了的数据.

可以做个逻辑列,已经完成的行:True ,  DataColChanged中代码重置的时候,排除这些True的行···


 回到顶部
帅哥哟,离线,有人找我吗?
卟离卟弃
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1181 积分:8108 威望:0 精华:1 注册:2009/1/17 10:52:00
  发帖心情 Post By:2010/9/25 11:19:00 [只看该作者]

图片点击可在新窗口打开查看  恩   好主意  谢谢你,

 回到顶部
帅哥哟,离线,有人找我吗?
卟离卟弃
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1181 积分:8108 威望:0 精华:1 注册:2009/1/17 10:52:00
  发帖心情 Post By:2010/9/27 14:44:00 [只看该作者]

以下是引用狐狸爸爸在2010-9-25 9:03:00的发言:
我删除第一行的类别、计划开始生产时间、第一批入库时间、最后入库时间四列内容,然后再类别列输入成品,后三列自动计算得出了。

然后 再类别列输入成品  ;

 

狐爸,,有什么办法省约这一步.....让它全部都自动计算.图片点击可在新窗口打开查看

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:自动计算2.zip


图片点击可在新窗口打开查看此主题相关图片如下:1.png
图片点击可在新窗口打开查看

 

把级别倒着来可以计算出来...我想顺着来..顺着查看的时候,好看一些.

 

如果真没办法了,我就倒着来吧


 

[此贴子已经被作者于2010-9-27 14:59:47编辑过]

 回到顶部
总数 11 1 2 下一页