Rss & SiteMap
Foxtable(狐表) http://www.foxtable.com
下面的概念非常重要,务必要掌握。
DataTable和Table
假定在一个简化的订单管理系统中,包括产品、客户、订单三个表:
FoxTable中有一个集合DataTables,通过该集合可以获得指定名称的表,例如:
DataTables
("产品") '产品表实际上你是看不到DataTable的,你看到的是Table,也就是说,上面的三个图,实际上就是三个Table。
那么什么是Table呢?你可以这样理解,DataTable就像一个后台的数据仓库,不直接面对用户;而Table是前台,他从仓库(DataTable)中取得数据,然后呈现给用户。
同样,FoxTable中也有一个集合Tables,通过该集合可以获得指定名称的Table,在没有建立关联的情况下,我们这个简化的订单管理系统包括三个Table,分别是:
Tables
("产品")在初始的情况下,Table会从DataTable中提取所有数据呈现给用户,如果你设置了筛选条件,Table就会从DataTable提取符合条件的数据,然后呈现给用户。
所以关于DataTable和Table的关系,较为完整的描述是:
关联表和Table
假定在上面这个简化的订单管理系统中,我们建立如下两个关联:
父表 | 子表 | 关联列 |
产品 | 订单 | 产品编号 |
客户 | 订单 | 客户编号 |
因为关联的建立,DataTable和Table不再是一一对应的关系,例如我选择产品表的时候,就会出现三个Table,分别是:
三个Table的作用为:
Tables("产品"):主表,用于显示所有产品
Tables("产品.订单"):如果在Tables("产品")中选定一个产品,这里会显示该产品的全部订单。
Tables("产品.订单.客户"):如果在Tables("产品.订单")中选定一个订单,这里会显示该订单所属的客户。
同样在选择客户表的时候,也会出现三个Table:
Tables("客户")
Tables("客户.订单")
Tables("客户.订单.产品")
而选择订单表,出现的三个Table为:
Tables("订单")
Tables("订单.产品")
Tables("订单.客户")
由此我们可以看出,同一个DataTable可以有多个Table,例如下面三个Table:
Tables("产品")
Tables("订单.产品")
Tables("客户.订单.产品")
它们的数据全部来自于DataTables("产品")。
DataTable的数量是固定的,Table的数量随着关联的增加而增加,同一个DataTable可以有多个Table,每个Table都各取所需地从DataTable中提取数据呈现给用户。
假定有一个订单表,这个表有1000行,假定其中100个订单是订购产品PD01的,我们在该表筛选出PD01的订单,现在你在订单表看到的行数是100行。
我们在窗口执行下面的代码:
For Each
r As Row in Tables("订单").Rows上面的代码,将你看到的100行(订购PD01的订单)的折扣设为0.2。
我们再来测试下面的代码:
For Each
dr As DataRow in DataTables("订单").DataRows上面的代码所有1000行(全部订单)的折扣设为0.2
总之,如果你要对看得见的行进行操作,你就用Table,如果你要对所有行进行操作,你就用DataTable.
..........
总之,如果你要对看得见的行进行操作,你就用Table,如果你要对所有行进行操作,你就用DataTable.
这样说,好理解(虽没有完全领会)! 谢谢您了。