以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  修改关联父表记录,子表记录怎么样才能自动修改吗?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=2914)

--  作者:hejfen
--  发布时间:2009/5/25 19:25:00
--  修改关联父表记录,子表记录怎么样才能自动修改吗?

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


--  作者:狐哥
--  发布时间: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
--  发布时间:2009/5/25 19:53:00
--  
有代码吗?假如表A的第一列、第二列,和表B的第一列、第二列关联,修改表A的第一列的内容,表B的第一列也对应地修改。怎么样的代码?
--  作者:mr725
--  发布时间: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
--  发布时间:2009/5/26 10:24:00
--  
关联列会自动修改
--  作者:hejfen
--  发布时间: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


--  作者:狐狸爸爸
--  发布时间:2009/5/27 12:12:00
--  

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

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


--  作者:mr725
--  发布时间:2009/5/27 12:16:00
--  

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


--  作者:hejfen
--  发布时间:2009/5/27 12:23:00
--  
在表属性的事件,datacolchanged写的
--  作者:狐狸爸爸
--  发布时间:2009/5/27 12:25:00
--  
以下是引用hejfen在2009-5-27 12:23:00的发言:
在表属性的事件,datacolchanged写的


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