以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  {求解} 复制行及子行,编码跟新问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=178403)

--  作者:317617216
--  发布时间:2022/7/3 10:11:00
--  {求解} 复制行及子行,编码跟新问题

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

{求解} 复制行及子行,编码跟新
如图:当复制“分项000002”,其“子项000001,子项000002” 一并复制,编号根据现有最大编号值+1
但实际只复制了鼠标所在当前行,,并且行号未变

------------------------------
Select e.DataCol.Name
    Case "类型"
        If e.DataRow.IsNull("类型") Then
            e.DataRow("项目编号") = Nothing
        Else
            Dim lb As String = e.DataRow("类型")
            If e.DataRow("项目编号").StartsWith(lb) = False Then\'如果项目编号前缀不符
                Dim max As String
                Dim idx As Integer
                max = e.DataTable.Compute("Max(项目编号)", "类型 = \'" & lb & "\' And [_Identify] <> " & e.DataRow("_Identify")) \'取得该类别的最大编号
                If max > "" Then \'如果存在最大编号
                    idx = CInt(max.Substring(2, 6)) + 1 \'获得最大编号的后6位顺序号,并加1
                Else
                    idx = 1 \'否则顺序号等于1
                End If
                e.DataRow("项目编号") = lb & Format(idx, "000000")
            End If
        End If
End Select
-------------------

--  作者:有点蓝
--  发布时间:2022/7/3 20:41:00
--  
怎么做的复制?复制的时候不要复制编号,因为有判断【If e.DataRow("项目编号").StartsWith(lb) = False Then\'如果项目编号前缀不符
--  作者:317617216
--  发布时间:2022/7/3 21:15:00
--  
就右快捷键 “克隆行”操作



--  作者:317617216
--  发布时间:2022/7/3 21:18:00
--  
另想了解:
如果主表的列太多(400来列),都是表达式计算,实际完成界面会分解成三个表来展示,
每个表都是吧其他列隐藏,
计算速度会不会有影响?

--  作者:有点蓝
--  发布时间:2022/7/3 21:30:00
--  
下面二选一
1、不要使用克隆,自己写代码复制,不要复制编号
2、去掉这句判断:If e.DataRow("项目编号").StartsWith(lb) = False Then\'如果项目编号前缀不符

回4楼,表达式计算越多,速度就越慢。
--  作者:317617216
--  发布时间:2022/7/3 21:48:00
--  
谢谢!