以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]删除子表对应行 (http://foxtable.net/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.如何判断行是否有字段更新?(我放代码的地方对么) |