以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  查找并自动插入和变化  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=94725)

--  作者:zhangning
--  发布时间:2016/12/30 14:46:00
--  查找并自动插入和变化

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

老师,您好!

如图,想在"图番“列找到所有一样的组合(一般都是放在一起的,中间不会插入其图番),

在组合的最后一行,如果“工程” 列,是显示为“I”(字符),则不进行任何操作,

如果显示的不是“I”,则在最后一行的后面插入一行,“图番”列 显示与上一行同样的内容,
“工程”列 显示为“I”,“工序序号”列按照此组合内的个数进行排号,

例如第一个 是 03件1015*J 有7行,再插入一行("工程”列是“I”),共8行,
则“工序序号”列 从1开始排,直至排到8,I 工程列是 8,

请问老师,这个怎么弄呢?

--  作者:有点色
--  发布时间:2016/12/30 14:50:00
--  
 上传一个foxtable表格测试。
--  作者:zhangning
--  发布时间:2016/12/30 14:59:00
--  
好的


--  作者:有点色
--  发布时间:2016/12/30 15:00:00
--  

参考代码

 

For Each tf As String In DataTables("表A").GetValues("第四列", "第四列 is not null")
    Dim drs As List(Of DataRow) = DataTables("表A").Select("第四列 = \'" & tf & "\'", "_Sortkey")
    Dim ldr As DataRow = drs(drs.count-1)
    If ldr("第六列") <> "|" Then
        Dim ndr As DataRow = DataTables("表A").AddNew
        ndr("第四列") = ldr("第四列")
        ndr("第一列") = ldr("第一列")
        ndr("第六列") = "|"
        ndr("第七列") = drs.count+1
        ndr.baserow("_sortkey") = ldr("_sortkey") + 0.01
    End If
    For i As Integer = 0 To drs.count-1
        drs(i)("第七列") = i+1
    Next
Next


--  作者:zhangning
--  发布时间:2016/12/30 15:00:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:生产管理2016实验用.zip



--  作者:有点色
--  发布时间:2016/12/30 15:06:00
--  
参考4楼代码改一下。
--  作者:有点色
--  发布时间:2016/12/30 15:14:00
--  

参考代码

 

Dim dt As DataTable = DataTables("工程和工时")
dt.StopRedraw
For Each tf As String In dt.GetValues("图番", "图番 is not null")
    Dim drs As List(Of DataRow) = dt.Select("图番 = \'" & tf & "\'", "_Sortkey")
    Dim ldr As DataRow = drs(drs.count-1)
    If ldr("工程") <> "|" Then
        Dim ndr As DataRow = dt.AddNew
        For Each dc As DataCol In dt.DataCols
            If dc.Expression = "" Then
                ndr(dc.name) = ldr(dc.name)
            End If
        Next
        ndr("工程") = "|"
        ndr("工序序号") = drs.count+1
        ndr.baserow("_sortkey") = ldr("_sortkey") + 0.01
    End If
    For i As Integer = 0 To drs.count-1
        drs(i)("工序序号") = i+1
    Next
Next
dt.ResumeRedraw


--  作者:lili66450
--  发布时间:2017/1/1 20:12:00
--  
密码多少,学习学习