以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 条件 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=17899) |
||||
-- 作者:xjpxjp1972 -- 发布时间:2012/3/28 11:29:00 -- 条件 表shzz中有“年度”列,我想实现以下功能,当某一行数据的列“年度”值不一样时,复制这一行数据到新增加的一行,请教专家,该如何编写代码
|
||||
-- 作者:xjpxjp1972 -- 发布时间:2012/3/28 11:36:00 -- 狐狸爸爸,你在吗,请帮忙看看吧 |
||||
-- 作者:狐狸爸爸 -- 发布时间:2012/3/28 11:58:00 -- 做个简单的例子发上来,否则别人很难理解你的问题。
|
||||
-- 作者:xjpxjp1972 -- 发布时间:2012/3/28 14:43:00 -- If e.DataRow("年度").NewValue <> e.OldValue Then Return End If End If Dim dr As DataRow dr = DataTables("shzz").AddNew() For Each ColName As String In ColNames e.DataRow(ColName) = dr(ColName) 各位大哥,请看看上面代码在datarowadding事件中,为什么不对 |
||||
-- 作者:狐狸爸爸 -- 发布时间:2012/3/28 14:48:00 -- 我看不懂你的代码,新增行哪里来的旧值, 数据还没有输入,实际上datarowadding事件执行的时候,这一行还没有加入到表中呢。 你看看这里的一些示例吧: http://www.foxtable.com/help/topics/0630.htm
|
||||
-- 作者:xjpxjp1972 -- 发布时间:2012/3/28 14:54:00 -- 就是说,当新输入的年度列的值与先前值不一样时,新增一行,并将这一行的所有列值复制到新增加的一行,
|
||||
-- 作者:xjpxjp1972 -- 发布时间:2012/3/28 15:01:00 -- 现在您能看懂吗,先判断“年度”列的值的变化,再复制新增加一行 |
||||
-- 作者:狐狸爸爸 -- 发布时间:2012/3/28 15:18:00 -- 那应该设置在DataColChanged事件中,代码为: Select Case e.DataCol.name Case "年度" If e.OldValue<> e.NewValue AndAlso e.OldValue > "" AndAlso e.NewValue > "" Then Dim dr As DataRow = e.DataTable.AddNew For Each dc As DataCol In e.DataTable.DataCols dr(dc.name) = e.DataRow(dc.name) Next End If End Select |
||||
-- 作者:xjpxjp1972 -- 发布时间:2012/3/28 15:27:00 --
这是我在添加代码后出现的提示,请问狐狸爸爸是什么意思 |
||||
-- 作者:狐狸爸爸 -- 发布时间:2012/3/28 15:33:00 --
|