以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]删除子表对应行  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=21044)

--  作者:rpg2813
--  发布时间:2012/6/28 12:43:00
--  [求助]删除子表对应行
父表与子表一对多 已关联 e.datarow.getchildrows("子表表名").clear 这句代码没起效果也 ps:我是写在beforesavedatarow里 因为修改父表行后需要更新子表数据 所以干脆先删掉子表行数据,再加一遍
--  作者:程兴刚
--  发布时间:2012/6/28 14:01:00
--  
那要在修改前删掉!
--  作者:狐狸爸爸
--  发布时间:2012/6/28 14:58:00
--  

For Each dr DataRow in e.datarow.getchildrows("子表表名")

     dr.Delete

Next

 

 不过一般是这样解决的:

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

 


--  作者:程兴刚
--  发布时间:2012/6/28 15:19:00
--  
关键是他用的事件不对,beforesavedatarow事件中删除子表,如果是修改了父表的关联列,这时候的子表的关联行根本就找不到了,删除代码根本没有起作用!
--  作者:jianjingmaoyi
--  发布时间:2012/6/28 21:46:00
--  
直接点:

Dim r As Row = Tables("父表").Current
If r IsNot Nothing Then
    DataTables("子表").DeleteFor("关联列 =\'" & r("关联列") & "\'")
End If

--  作者:rpg2813
--  发布时间:2012/6/29 5:50:00
--  
以下是引用狐狸爸爸在2012-6-28 14:58:00的发言:

For Each dr DataRow in e.datarow.getchildrows("子表表名")

     dr.Delete

Next

 

 不过一般是这样解决的:

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

 

谢谢狐爸,第一个方法ok了

第二个方法和其他几位的都是父表行和子表行一起删除,不是我要的效果

我是父表行对应不定的子表行(由父表行的内容决定)

然后基本修改每个父表列都要去更新判断

所以我就干脆先把修改过的父表行对应的子表行删掉

重新代码提取父表行数据到子表去生成

父表行修改过的有代码判断否?所以我用

beforesavedatarow
 

[此贴子已经被作者于2012-6-29 5:54:12编辑过]

--  作者:rpg2813
--  发布时间:2012/6/29 5:52:00
--  

追问下 clear为什么不对呢


--  作者:rpg2813
--  发布时间:2012/6/29 23:21:00
--  
以下是引用程兴刚在2012-6-28 15:19:00的发言:
关键是他用的事件不对,beforesavedatarow事件中删除子表,如果是修改了父表的关联列,这时候的子表的关联行根本就找不到了,删除代码根本没有起作用!

有无好的方法判断数据行是否有更新(10多个列)

每1列更改都对我的子表有影响

ps:话说回来,如果狐表可以在关联表时也加上表达式就好了

比如我表b第一列=表a第一列+表a第二列


--  作者:狐狸爸爸
--  发布时间:2012/6/30 8:04:00
--  

关联表本来就可以加表达式啊


--  作者:rpg2813
--  发布时间:2012/6/30 20:08:00
--  
以下是引用狐狸爸爸在2012-6-30 8:04:00的发言:

关联表本来就可以加表达式啊

啊,口误

呵呵

但是还有以下问题

1.clear为什么不对?

2.如何判断行是否有字段更新?(我放代码的地方对么)