以文本方式查看主题 - 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 -- {求解} 复制行及子行,编码跟新问题 {求解} 复制行及子行,编码跟新 如图:当复制“分项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\'如果项目编号前缀不符】 |
-- 作者:317617216 -- 发布时间:2022/7/3 21:48:00 -- 谢谢! |