Rss & SiteMap

Foxtable(狐表) http://www.foxtable.com

新一代数据库软件,完美融合Access、Foxpro、Excel、vb.net之优势,人人都能掌握的快速软件开发工具!
共11 条记录, 每页显示 10 条, 页签: [1] [2]
[浏览完整版]

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

1楼
hejfen 发表于:2009/5/25 19:25:00

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

2楼
狐哥 发表于: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

3楼
hejfen 发表于:2009/5/25 19:53:00
有代码吗?假如表A的第一列、第二列,和表B的第一列、第二列关联,修改表A的第一列的内容,表B的第一列也对应地修改。怎么样的代码?
4楼
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编辑过]
5楼
yangming 发表于:2009/5/26 10:24:00
关联列会自动修改
6楼
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

7楼
狐狸爸爸 发表于:2009/5/27 12:12:00

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

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

8楼
mr725 发表于:2009/5/27 12:16:00

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

9楼
hejfen 发表于:2009/5/27 12:23:00
在表属性的事件,datacolchanged写的
10楼
狐狸爸爸 发表于:2009/5/27 12:25:00
以下是引用hejfen在2009-5-27 12:23:00的发言:
在表属性的事件,datacolchanged写的


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

共11 条记录, 每页显示 10 条, 页签: [1] [2]

Copyright © 2000 - 2018 foxtable.com Tel: 4000-810-820 粤ICP备11091905号

Powered By Dvbbs Version 8.3.0
Processed in .03125 s, 2 queries.