Foxtable(狐表)用户栏目专家坐堂 → 修改关联父表记录,子表记录怎么样才能自动修改吗?


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

主题:修改关联父表记录,子表记录怎么样才能自动修改吗?

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


加好友 发短信
等级:幼狐 帖子:188 积分:1947 威望:0 精华:0 注册:2008/9/23 22:10:00
修改关联父表记录,子表记录怎么样才能自动修改吗?  发帖心情 Post By:2009/5/25 19:25:00 [只看该作者]

父表A和表B关联,如果我想修改表A的记录,表B的记录也跟着自动修改,需要什么样的代码?


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


加好友 发短信
等级:三尾狐 帖子:719 积分:5181 威望:0 精华:1 注册:2008/9/24 10:41:00
  发帖心情 Post By:2009/5/25 19:31:00 [只看该作者]

GetChildRows

返回一个DataRow集合,集合中包括指定子表中和该行对应的全部关联行,语法:

GetChildRows(ChildName)

ChildName: 子表名称。

示例一

假定产品表和订单表之间通过产品编号建立了关联,下面的代码获得第一个产品的全部订单:

Dim drs As List(Of Datarow)
drs =
DataTables("产品").
DataRows(0).GetchildRows("订单")

示例二

我们知道,如果要删除父表中的某一行,必须先在关联表中删除对应的子行,这样必须进行两次操作,才能成功删除一个父行。
如果需要一次操作,即可同时删除父行和对应的子行,可以参考下面的代码:

Dim dr As DataRow = DataTables("产品").DataRows(0)
For Each
sr As DataRow In dr.GetChildRows("订单")
    sr.Delete()

Next

dr.Delete


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


加好友 发短信
等级:幼狐 帖子:188 积分:1947 威望:0 精华:0 注册:2008/9/23 22:10:00
  发帖心情 Post By:2009/5/25 19:53:00 [只看该作者]

有代码吗?假如表A的第一列、第二列,和表B的第一列、第二列关联,修改表A的第一列的内容,表B的第一列也对应地修改。怎么样的代码?

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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2009/5/26 10:10:00 [只看该作者]

以下是引用hejfen在2009-5-25 19:53:00的发言:
有代码吗?假如表A的第一列、第二列,和表B的第一列、第二列关联,修改表A的第一列的内容,表B的第一列也对应地修改。怎么样的代码?

这头两列应该都不要做任何事情,会自动跟随父表自动生成的吧~

狐表应该在关联表的时候,子表要同步显示父表的关联列就直观了~ 建议增加一个关联选项,true就在子表中显示关联列,false就不显示。

[此贴子已经被作者于2009-5-26 10:15:37编辑过]

 回到顶部
美女呀,离线,留言给我吧!
yangming
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:超级版主 帖子:4109 积分:23338 威望:0 精华:21 注册:2008/9/1 20:07:00
  发帖心情 Post By:2009/5/26 10:24:00 [只看该作者]

关联列会自动修改

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


加好友 发短信
等级:幼狐 帖子:188 积分:1947 威望:0 精华:0 注册:2008/9/23 22:10:00
  发帖心情 Post By:2009/5/27 12:05:00 [只看该作者]

我这样写可以实现这个功能,但我关联表有十多万记录,速度实在太慢了,什么样的代码才能是最快的啊?
For Each k As Row in Tables("地址.A").Rows
    k("街名") = e.datarow("街名")
   k("号码") = e.datarow("号码")
   k("栋") = e.datarow("栋")
    k("小区") = e.datarow("小区")
    k("梯") = e.datarow("梯")
next


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


加好友 发短信
等级:管理员 帖子:47476 积分:251245 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/5/27 12:12:00 [只看该作者]

你这个代码写在哪里啊,看上去有点奇怪。
1、修改附表关联列的内容,子表关联列内容会自动更新,根本不需要写代码的。
2、很少会通过这么多列建立关联的。
3、即使有10万条记录,上面的代码也不过影响其中最多100行,因为一个楼梯间最多不过100户吧?

不懂你的意思。最好保留少量数据,上传文件,说明目的。


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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2009/5/27 12:16:00 [只看该作者]

你不会一次要写(或重算)十几万条记录吧,总是一条条地录入啊~   对于单条的记录,再长的代码也是瞬间就能完成的~ 


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


加好友 发短信
等级:幼狐 帖子:188 积分:1947 威望:0 精华:0 注册:2008/9/23 22:10:00
  发帖心情 Post By:2009/5/27 12:23:00 [只看该作者]

在表属性的事件,datacolchanged写的

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


加好友 发短信
等级:管理员 帖子:47476 积分:251245 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/5/27 12:25:00 [只看该作者]

以下是引用hejfen在2009-5-27 12:23:00的发言:
在表属性的事件,datacolchanged写的


那更加不能理解了。
还是传文件加以说明。


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