以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  条件  (http://foxtable.com/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
--  


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20120328152511.jpg
图片点击可在新窗口打开查看

这是我在添加代码后出现的提示,请问狐狸爸爸是什么意思


--  作者:狐狸爸爸
--  发布时间:2012/3/28 15:33:00
--  

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目337.table