Foxtable(狐表)用户栏目专家坐堂 → [求助]同步更新问题?


  共有11314人关注过本帖树形打印复制链接

主题:[求助]同步更新问题?

帅哥哟,离线,有人找我吗?
Tommy
  1楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:61 积分:487 威望:0 精华:1 注册:2011/6/20 16:02:00
[求助]同步更新问题?  发帖心情 Post By: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
    Dim dr As DataRow = e.DataRow.GetParentRow("A")
    If dr IsNot Nothing Then
        e.DataRow("Remark") = dr("Remark")
    Else
        e.DataRow("Remark") = Nothing
    End If
End If

 

当更新主表A的ID列时,我发现是先执行表B的DataColChanged事件,再执行表A的DataColChanged事件,

导致表B里的Remark列内容为空!

 

有什么办法能解决?


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/7/9 11:42:00 [只看该作者]


 回到顶部
帅哥哟,离线,有人找我吗?
Tommy
  3楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:61 积分:487 威望:0 精华:1 注册:2011/6/20 16:02:00
  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/7/9 11:53:00 [只看该作者]

1、设置关联的时候,取消同步更新关联列选项

2、代码应该设置在DataColChanging事件,而不是DataColChanged事件。


 回到顶部
帅哥哟,离线,有人找我吗?
Tommy
  5楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:61 积分:487 威望:0 精华:1 注册:2011/6/20 16:02:00
  发帖心情 Post By:2011/7/9 11:57:00 [只看该作者]

取消同步更新关联列的话,那我修改表A的ID时,表B的AID就不会更新了,更不会触发表B的DataColChanged事件和DataColChanging事件


 回到顶部
帅哥哟,离线,有人找我吗?
Tommy
  6楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:61 积分:487 威望:0 精华:1 注册:2011/6/20 16:02:00
  发帖心情 Post By:2011/7/11 9:07:00 [只看该作者]

这个怎么没人解决?


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/7/11 9:09:00 [只看该作者]

你到底是要更改父表的时候, 子表联动,还是更改子表的时候,父表联动?

 回到顶部
帅哥哟,离线,有人找我吗?
Tommy
  8楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:61 积分:487 威望:0 精华:1 注册:2011/6/20 16:02:00
  发帖心情 Post By:2011/7/11 9:22:00 [只看该作者]

更改父表的时候,子表联动!

这个联动我通过关联的时候勾选了同步更新关联列做出来,但是父表里的其它数据带不出到子表,我用的不是表达式列!

我是在子表的DataColChanged事件里写代码来获取父表的数据带到子表里。。


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By: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
  10楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:婴狐 帖子:61 积分:487 威望:0 精华:1 注册:2011/6/20 16:02:00
  发帖心情 Post By:2011/7/11 11:51:00 [只看该作者]

已解决!

不过总体来说这个解决方法不够合理,主表关联列数据修改时,子表的DataColChanged事件代码执行变得毫无意义,却又不能删除,影响运行速度。


 回到顶部
总数 11 1 2 下一页