以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  满足条件重新计算  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=175164)

--  作者:nuoyan89
--  发布时间:2022/2/22 16:57:00
--  满足条件重新计算
老师,我在窗口表中的表事件中写了标注红色字体的条件,明明有满足这个条件的,但是还是需要手动刷新计算,不能按照条件重新计算,请帮忙看看,谢谢
If e.DataRow("待加工数") <>  0 AndAlso e.DataRow("计划数量") <>  0     Then
    If e.DataCol.Name  = "成品编码" OrElse e.DataCol.Name = "生产批次" OrElse e.DataCol.Name = "加工工序" OrElse e.DataCol.Name = "使用设备" Then
        Dim Filter40 As String = "[成品编码] = \'" & e.DataRow("成品编码") & "\' and [生产批次] = \'" & e.DataRow("生产批次")  & "\' and [加工工序] = \'" & e.DataRow("加工工序") & "\' and [使用设备] = \'" & e.DataRow("使用设备")  & "\'"
        e.DataRow("不合格品") = DataTables("过程异常明细").SQLCompute("Sum(异常数量)", Filter40)
        e.DataRow("流转数量") = DataTables("过程异常明细").SQLCompute("Sum(流转数量)", Filter40)
    End If
    If e.DataCol.Name  = "成品编码" OrElse e.DataCol.Name = "生产批次"  Then
        Dim Filter20 As String = "[成品编码] = \'" & e.DataRow("成品编码") & "\' and [生产批次] = \'" & e.DataRow("生产批次") & "\' and [加工工序] = \'" & e.DataRow("加工工序") & "\' and [使用设备] = \'" & e.DataRow("使用设备") & "\' And  (判定结果  Like \'%料废%\' Or 判定结果 like \'%工废%\')"
        e.DataRow("报废品") = DataTables("过程异常明细").SQLCompute("count(异常数量)", Filter20)
    End If
    If e.DataCol.Name  = "成品编码" OrElse e.DataCol.Name = "生产批次"  Then
        Dim Filter21 As String = "[成品编码] = \'" & e.DataRow("成品编码") & "\' and [生产批次] = \'" & e.DataRow("生产批次") & "\' and [加工工序] = \'" & e.DataRow("加工工序") & "\' and [使用设备] = \'" & e.DataRow("使用设备") & "\' And  判定结果  Like \'%长期待处理%\'"
        e.DataRow("长期待处理") = DataTables("过程异常明细").SQLCompute("count(异常数量)", Filter21)
    End If
end if

--  作者:有点蓝
--  发布时间:2022/2/22 17:05:00
--  
这些列名的数据发生了变化,才会触发datacolchanged事件

   If e.DataCol.Name  = "成品编码" OrElse e.DataCol.Name = "生产批次" OrElse e.DataCol.Name = "加工工序" OrElse e.DataCol.Name = "使用设备" Then
        Dim Filter40 As String = "[成品编码] = \'" & e.DataRow("成品编码") & "\' and [生产批次] = \'" & e.DataRow("生产批次")  & "\' and [加工工序] = \'" & e.DataRow("加工工序") & "\' and [使用设备] = \'" & e.DataRow("使用设备")  & "\'"
        e.DataRow("不合格品") = DataTables("过程异常明细").SQLCompute("Sum(异常数量)", Filter40)
        e.DataRow("流转数量") = DataTables("过程异常明细").SQLCompute("Sum(流转数量)", Filter40)
    End If
    If e.DataCol.Name  = "成品编码" OrElse e.DataCol.Name = "生产批次"  Then
        Dim Filter20 As String = "[成品编码] = \'" & e.DataRow("成品编码") & "\' and [生产批次] = \'" & e.DataRow("生产批次") & "\' and [加工工序] = \'" & e.DataRow("加工工序") & "\' and [使用设备] = \'" & e.DataRow("使用设备") & "\' And  (判定结果  Like \'%料废%\' Or 判定结果 like \'%工废%\')"
        e.DataRow("报废品") = DataTables("过程异常明细").SQLCompute("count(异常数量)", Filter20)
    End If
    If e.DataCol.Name  = "成品编码" OrElse e.DataCol.Name = "生产批次"  Then

--  作者:nuoyan89
--  发布时间:2022/2/22 17:09:00
--  
如果我想改成在这些列不发生变化的情况,只要“待加工数量”不等于0,每次打开这个窗口时就能自动刷新应该怎么变动呢?因为我手动点击下面刷新时结果有变动。
DataTables("排产扫码_生产排产表").DataCols("生产批次").RaiseDataColChanged()

--  作者:有点蓝
--  发布时间:2022/2/22 17:18:00
--  
只能手动调用RaiseDataColChanged刷新
--  作者:nuoyan89
--  发布时间:2022/2/23 8:26:00
--  
我能否把这个代码DataTables("排产扫码_生产排产表").DataCols("生产批次").RaiseDataColChanged()写在窗口加载事件中,打开窗口时,只要是待加工数不等于0时就自动触发这个代码呢?
--  作者:有点蓝
--  发布时间:2022/2/23 8:50:00
--  
能不能自己测试不就知道了,这种还要问?把代码放到afterload咯