以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 满足条件重新计算 (http://foxtable.com/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咯 |