以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  新增行时自动复制数据表中已经有记录的行  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=14415)

--  作者:RandyBoy
--  发布时间:2011/11/18 15:07:00
--  新增行时自动复制数据表中已经有记录的行
在窗体中新增一行时,怎么样才能复制数据表已经有的记录行到当前新增行相对应的字段上?
--  作者:狐狸爸爸
--  发布时间:2011/11/18 15:25:00
--  

http://www.foxtable.com/help/topics/0630.htm

 


--  作者:RandyBoy
--  发布时间:2011/11/18 16:00:00
--  

在此事件中想通过e.datatable获得当前行,好像不行,是不是只有tables才有current属性,有点混淆了。

 

若在此事件中想获得由窗体传递过来的某行,又应该引用呢,这样的话是不是在不同事件中传递参数,若用全局变量的话,似乎有点不符合逻辑啊

 

另外在代码编辑器的精灵中并没有列出某控制的所有方法属性,比如checkbox的checked属性,dropdownbo的Value,没有列出的好像都是些常用的,呵呵~


--  作者:狐狸爸爸
--  发布时间:2011/11/18 16:43:00
--  

1、要灵活变通,复制当前行,这样设置事件代码就行了:
  
Dim r As Row = Tables("表名").Current
For Each dc As DataCol In e.DataTable.DataCols
     e.DataRow(dc.Name) = r(dc.Name)
Next

 

2、代码编辑器不全的,以帮助为准。

 


--  作者:RandyBoy
--  发布时间:2011/11/18 17:21:00
--  

事先在datacolchanging中禁止某列重复,若此时在datarowadding中新增以上代码,代码运行过程中一定会出现某列重复提示的,那该如何避免?


--  作者:RandyBoy
--  发布时间:2011/11/18 17:23:00
--  

前提是某列值是否重复,是必须要有的检查


--  作者:狐狸爸爸
--  发布时间:2011/11/18 17:25:00
--  
以下是引用RandyBoy在2011-11-18 17:21:00的发言:

事先在datacolchanging中禁止某列重复,若此时在datarowadding中新增以上代码,代码运行过程中一定会出现某列重复提示的,那该如何避免?

 

 

Dim r As Row = Tables("表名").Current
For Each dc As DataCol In e.DataTable.DataCols

    if dc.Name <> "禁止重复列的列名" Then
          e.DataRow(dc.Name) = r(dc.Name)

    end if
Next


--  作者:RandyBoy
--  发布时间:2011/11/18 17:29:00
--  
图片点击可在新窗口打开查看 ,发现狐狸爸爸的心态很好,很有耐心,辛苦了~~~

--  作者:RandyBoy
--  发布时间:2011/11/18 17:41:00
--  

这样禁止后,被禁止的值无法被复制了,是不是可以把datacolchanging中禁止某列重复的代码统一在行保存按扭上检查执行?


--  作者:狐狸爸爸
--  发布时间:2011/11/18 17:42:00
--  

你的问题已经自相矛盾了,既然要禁止重复,就不应该复制啊。