以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]同步更新问题? (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=11139) |
-- 作者:Tommy -- 发布时间:2011/7/9 11:38:00 -- [求助]同步更新问题? 主表A(ID、Remark)与子表B(AID、Remark、列1、列2)关联(A.ID=B.AID),同步更新表数据
子表B的DataColChanged事件代码:(通过AID将表A数据列Remark内容复制到表B的Remark列) If e.DataCol.Name = "AID" Then
当更新主表A的ID列时,我发现是先执行表B的DataColChanged事件,再执行表A的DataColChanged事件, 导致表B里的Remark列内容为空!
有什么办法能解决? |
-- 作者:狐狸爸爸 -- 发布时间:2011/7/9 11:42:00 -- http://help.foxtable.com/topics/1644.htm
|
-- 作者:Tommy -- 发布时间:2011/7/9 11:46:00 -- 狐爸,你没看懂我说的问题,再看清楚。 我已经设了同步更新列内容,所以在表A的ID列修改时,表B的ID列也修改,从而触发表B的DataColChanged事件,但是这里有个顺序问题,就是它先执行了表B的DataColChanged事件再把表A的ID修改完成,导致表B的DataColChanged事件里取得的ID还是原来的数据不是修改后的数据。 [此贴子已经被作者于2011-7-9 11:53:26编辑过]
|
-- 作者:狐狸爸爸 -- 发布时间:2011/7/9 11:53:00 -- 1、设置关联的时候,取消同步更新关联列选项 2、代码应该设置在DataColChanging事件,而不是DataColChanged事件。 |
-- 作者:Tommy -- 发布时间:2011/7/9 11:57:00 -- 取消同步更新关联列的话,那我修改表A的ID时,表B的AID就不会更新了,更不会触发表B的DataColChanged事件和DataColChanging事件 |
-- 作者:Tommy -- 发布时间:2011/7/11 9:07:00 -- 这个怎么没人解决? |
-- 作者:狐狸爸爸 -- 发布时间:2011/7/11 9:09:00 -- 你到底是要更改父表的时候, 子表联动,还是更改子表的时候,父表联动? |
-- 作者:Tommy -- 发布时间:2011/7/11 9:22:00 -- 更改父表的时候,子表联动! 这个联动我通过关联的时候勾选了同步更新关联列做出来,但是父表里的其它数据带不出到子表,我用的不是表达式列! 我是在子表的DataColChanged事件里写代码来获取父表的数据带到子表里。。 |
-- 作者:狐狸爸爸 -- 发布时间:2011/7/11 9:30:00 -- 在表A的DataColChanged加入代码:
if e.DataCol.Name = "ID" Then For each dr as datarow in e.DataRow.GetChildRows("表B") dr("Remark") = e.Datarow("Remark") next end if
|
-- 作者:Tommy -- 发布时间:2011/7/11 11:51:00 -- 已解决! 不过总体来说这个解决方法不够合理,主表关联列数据修改时,子表的DataColChanged事件代码执行变得毫无意义,却又不能删除,影响运行速度。 |