以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]新增行时自动携带上一行的数值  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=1027)

--  作者:t_fs
--  发布时间:2008/10/31 10:33:00
--  [求助]新增行时自动携带上一行的数值
     新增行时自动携带上一行的数值,类似易表中cell(row-1,col), 如何实现?

     是在表属性中的DataRowAdding事件中,写入代码吗?怎样写,请帮助一下,谢谢!
--  作者:狐狸爸爸
--  发布时间:2008/10/31 10:50:00
--  

如果要整行复制:

With Tables("表名")
       .Rows(.Rows.Count - 1).Clone

End With

如果要单独复制某几列,请在DatarowAdding事件中设置代码:
 

Dim ColNames() As String = {"第一列","第二列","第三列","第四列"}

Dim dr As Row = Tables("A").Current

If dr Is Nothing Then

    Return

End If

For Each ColName As String In ColNames

    e.DataRow(ColName) = dr(ColName)

Next


ColNames数组包括要复制的列的名称,请根据需要修改列名和表名:

 

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:管理项目1.table


--  作者:czy
--  发布时间:2008/10/31 10:55:00
--  
现在有默认值啊,可以在列属性默认值中设置。
DataRowAdding事件代码,这样行吗?
   

e.DataRow("列名") = CurrentTable.Rows(CurrentTable.Rows.Count - 1)("列名")


  

--  作者:狐狸爸爸
--  发布时间:2008/10/31 11:20:00
--  
如果只是复制一列,就用c版的代码吧
--  作者:t_fs
--  发布时间:2008/10/31 11:57:00
--  
     谢谢了!!
--  作者:t_fs
--  发布时间:2008/10/31 12:51:00
--  
     
现在有默认值啊,可以在列属性默认值中设置。

e.DataRow("列名") = CurrentTable.Rows(CurrentTable.Rows.Count - 1)("列名")


        1)经测试,在列属性默认值中设置以上公式,提示错误!如果是日期字段,复制的日期非上一行的日期。

      2)在DataRowAdding事件中,加入上述代码,可实现此功能。
--  作者:czy
--  发布时间:2008/10/31 13:49:00
--  
默认值只能定义一些简单的,如Date(),不支持代码。
三楼代码的确只适合放到DataRowAdding事件中。
--  作者:blackzhu
--  发布时间:2008/11/4 18:40:00
--  
以下是引用t_fs在2008-10-31 10:33:00的发言:
     新增行时自动携带上一行的数值,类似易表中cell(row-1,col), 如何实现?

     是在表属性中的DataRowAdding事件中,写入代码吗?怎样写,请帮助一下,谢谢!

 在新增行菜单中,直接克隆行不是更加简单,同样按一下按钮。