以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  导出不全  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=104961)

--  作者:zhangning
--  发布时间:2017/8/9 10:46:00
--  导出不全

老师,我想将”进展状态“里显示”报警“的行,导入到表”加工进展异常监控“里,
代码是:
If e.DataCol.name Like "*序_进展状态*"  Then
    Dim idx As Integer = e.DataCol.name.replace("第", "").replace("序_进展状态", "")
    If e.DataRow("第" & idx & "序_进展状态") = "报警"  Then
        Dim dr6 As DataRow
        dr6 = DataTables("加工进展异常监控").Find("进展状态 = \'" & e.DataRow("第" & idx & "序_进展状态") & "\'")
        If dr6 Is Nothing Then
            dr6 = DataTables("加工进展异常监控").AddNew()
            dr6("进展状态") = e.DataRow("第" & idx & "序_进展状态")
            dr6("设备") = e.DataRow("第" & idx & "序_调度设备")
            dr6("类别") = "计划"
            dr6("部组名") = e.DataRow("部组名")
            dr6("部品ID") = e.DataRow("部品ID")
            dr6("工程") = e.DataRow("第" & idx & "序_工程名")
            dr6("开始日期") = e.DataRow("第" & idx & "序_开始日")
            dr6("结束日期") = e.DataRow("第" & idx & "序_结束日")
            dr6("投入数量") = e.DataRow("第" & idx & "序_投入数量")
            dr6("作业者") = e.DataRow("第" & idx & "序_作业者")
            dr6("加工先") = e.DataRow("第" & idx & "序_加工先")
            dr6("配膳日") = e.DataRow("第" & idx & "序_配膳日")
            dr6("夜") = e.DataRow("第" & idx & "序_夜")
            dr6("瓶颈") = e.DataRow("第" & idx & "序_瓶颈")
        End If
    End If
End If

但导出的不全,无论有多少个”报警“,但导出的只有一个,
请参考下图,请老师帮看看问题出在哪里,谢谢!

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

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



--  作者:有点甜
--  发布时间:2017/8/9 11:25:00
--  

If e.DataCol.name Like "*序_进展状态*"  Then
    Dim idx As Integer = e.DataCol.name.replace("第", "").replace("序_进展状态", "")
    If e.DataRow("第" & idx & "序_进展状态") = "报警"  Then
        Dim dr6 As DataRow
        dr6 = DataTables("加工进展异常监控").Find("加工日期编号 = \'" & e.DataRow("第" & idx & "序_加工日期编号") & "\'")
        If dr6 Is Nothing Then
            dr6 = DataTables("加工进展异常监控").AddNew()
            dr6("加工日期编号") = e.DataRow("第" & idx & "序_加工日期编号")
            dr6("进展状态") = e.DataRow("第" & idx & "序_进展状态")
            dr6("设备") = e.DataRow("第" & idx & "序_调度设备")
            dr6("类别") = "计划"
            dr6("部组名") = e.DataRow("部组名")
            dr6("部品ID") = e.DataRow("部品ID")
            dr6("工程") = e.DataRow("第" & idx & "序_工程名")
            dr6("开始日期") = e.DataRow("第" & idx & "序_开始日")
            dr6("结束日期") = e.DataRow("第" & idx & "序_结束日")
            dr6("投入数量") = e.DataRow("第" & idx & "序_投入数量")
            dr6("作业者") = e.DataRow("第" & idx & "序_作业者")
            dr6("加工先") = e.DataRow("第" & idx & "序_加工先")
            dr6("配膳日") = e.DataRow("第" & idx & "序_配膳日")
            dr6("夜") = e.DataRow("第" & idx & "序_夜")
            dr6("瓶颈") = e.DataRow("第" & idx & "序_瓶颈")
        End If
    End If
End If


--  作者:zhangning
--  发布时间:2017/8/9 11:58:00
--  
这个问题,按照老师的方法,解决了,
还有一个问题,如果显示“报警”就追加,追加以后,如果报警消除,显示为“报警解除”,那就需要将原来追加的行删掉,

这么做的目的是,将各部门报警的着重抓出来,如果问题解决了,就不需要关注了,
需要自动删除,请问老师,这种功能如何实现呢?谢谢!


--  作者:zhangning
--  发布时间:2017/8/9 15:25:00
--  
写了以下代码,请老师斧正,谢谢!

If e.DataCol.name Like "*序_进展状态*"  Then
    Dim idx As Integer = e.DataCol.name.replace("第", "").replace("序_进展状态", "")
    If e.DataRow("第" & idx & "序_进展状态") = "报警解除"  Then
        Dim dr6 As DataRow
        dr6 = DataTables("加工进展异常监控").Find("开始日期 = \'" & e.DataRow("第" & idx & "序_开始日期") & "\'")
        If dr6 IsNot Nothing Then
            dr6 = DataTables("加工进展异常监控").Delete()                       
        End If
    End If
End If

--  作者:有点甜
--  发布时间:2017/8/9 15:35:00
--  
If e.DataCol.name Like "*序_进展状态*"  Then
    Dim idx As Integer = e.DataCol.name.replace("第", "").replace("序_进展状态", "")
    If e.DataRow("第" & idx & "序_进展状态") = "报警解除"  Then
        DataTables("加工进展异常监控").DeleteFor("加工日期编号 = \'" & e.DataRow("第" & idx & "序_加工日期编号") & "\'")
    End If
End If

--  作者:zhangning
--  发布时间:2017/8/9 15:50:00
--  
老师太厉害了,经过实验,点“报警”,就增加行了,如“报警解除“后,增加的行就自动删除了,
我什么时候能达到老师这样的水平就好了。

--  作者:zhangning
--  发布时间:2017/8/10 15:09:00
--  
老师,我今天多加了一个条件,如代码:
If e.DataCol.name Like "*序_进展状态*"  Then
    Dim idx As Integer = e.DataCol.name.replace("第", "").replace("序_进展状态", "")
    If e.DataRow("第" & idx & "序_进展状态") = "报警"  Then
        Dim dr6 As DataRow
         dr6 = DataTables("设备别任务").Find("指令单 = \'" & e.DataRow("指令单") & "\' AND 工程 = \'" & e.DataRow("第" & idx & "序_工程名") & "\'")
        If dr6 Is Nothing Then
            dr6 = DataTables("加工进展异常监控").AddNew()
            dr6("开始日期") = e.DataRow("第" & idx & "序_开始日")
            dr6("进展状态") = e.DataRow("第" & idx & "序_进展状态")
            dr6("设备") = e.DataRow("第" & idx & "序_调度设备")
            dr6("类别") = "计划"
            dr6("部组名") = e.DataRow("部组名")
            dr6("部品ID") = e.DataRow("部品ID")
            dr6("指令单") = e.DataRow("指令单")
            dr6("工程") = e.DataRow("第" & idx & "序_工程名")
            dr6("开始日期") = e.DataRow("第" & idx & "序_开始日")
            dr6("结束日期") = e.DataRow("第" & idx & "序_结束日")
            dr6("投入数量") = e.DataRow("第" & idx & "序_投入数量")
            dr6("作业者") = e.DataRow("第" & idx & "序_作业者")
            dr6("加工先") = e.DataRow("第" & idx & "序_加工先")
            dr6("配膳日") = e.DataRow("第" & idx & "序_配膳日")
            dr6("夜") = e.DataRow("第" & idx & "序_夜")
            dr6("瓶颈") = e.DataRow("第" & idx & "序_瓶颈")
        End If
    End If
End If
结果每次切换数据表,就会再次导出一遍,导致多次重复,请老师帮看看问题出在哪里?谢谢!


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

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

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




--  作者:有点甜
--  发布时间:2017/8/10 18:25:00
--  
你切换数据表执行了什么代码?maintableChanged等事件。
[此贴子已经被作者于2017/8/10 18:24:52编辑过]

--  作者:zhangning
--  发布时间:2017/8/11 8:47:00
--  
老师,是属性中的DATACOLCHANGED


--  作者:zhangning
--  发布时间:2017/8/11 8:49:00
--  
在maintablechanged中的代码是:
DataTables("加工排产").DataCols("第11序_调度设备").RaiseDataColChanged()