以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  新增复制当前行  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=147401)

--  作者:15666282205
--  发布时间:2020/3/16 8:27:00
--  新增复制当前行
老师,我想实现新增行时自动复制选中的当前行,请指导
--  作者:有点蓝
--  发布时间:2020/3/16 9:01:00
--  
直接克隆选中行即可
Dim r As Row = Tables("表A").current
If r IsNot Nothing Then
    r.Clone
End If

--  作者:15666282205
--  发布时间:2020/3/16 9:28:00
--  
老师,忘了说明白,需要复制当前行的其中几列,直接克隆还不行,麻烦您优化一下哦
--  作者:有点蓝
--  发布时间:2020/3/16 9:55:00
--  
方法一、克隆后去掉不需要的数据

Dim r As Row = Tables("表A").current
Dim Cols1() As String = {"列一","列二","列三"}
    Dim 
dr2 As Row = Tables("表A").AddNew()
    For 
i As Integer = 0 To Cols1.Length -1
        
dr2(Cols2(i)) = r(Cols1(i
))
    Next

[此贴子已经被作者于2020/3/16 9:54:54编辑过]

--  作者:15666282205
--  发布时间:2020/3/16 11:11:00
--  
老师,这是您以前教我的代码,是复制最后一行,能不能改编为复制当前行呢?
\'---------------------自动复制最后一行-------------
If e.DataTable.DataRows.Count = 0 Then \'如果是一个空表
    Return \'那么返回
End If
Dim ColNames As String() = {"生产工段","考勤班组","操作人","商品编码","商品全名"}  \'定义一个数组,保存复制列的名称
Dim dr As DataRow = e.DataTable.DataRows(e.DataTable.DataRows.Count - 1) \'获得最后一行
For Each ColName As String In ColNames
    e.DataRow(ColName) = dr(ColName) \'将最后一行的内容复制到新增行中.
Next

--  作者:有点蓝
--  发布时间:2020/3/16 11:23:00
--  
看4楼
--  作者:15666282205
--  发布时间:2020/3/17 8:09:00
--  
老师,以下是我改编的代码,提示:编译错误,未声明“cols2”,错误代码:dr2(Cols2(i)) = r(Cols1(i)).请您看看。
\'-----------------------------------------新代码复制当前行------------------------------
\'Dim r As Row = Tables("工时表").current
\'Dim Cols1() As String = {"生产工段","考勤班组","考勤员","操作人","商品编码","商品全名"}
\'Dim dr2 As Row = Tables("工时表").AddNew()
\'For i As Integer = 0 To Cols1.Length -1
    \'dr2(Cols2(i)) = r(Cols1(i))
\'Next

--  作者:有点蓝
--  发布时间:2020/3/17 8:39:00
--  
dr2(Cols1(i)) = r(Cols1(i))
--  作者:15666282205
--  发布时间:2020/3/17 8:42:00
--  
之前我也改了试了,一运行狐表就退出
--  作者:15666282205
--  发布时间:2020/3/17 8:46:00
--  
行了,我以前放在表的新增行里,系统死机,我放在按钮里可以了,谢谢