加载其它表的数据

DataTable的Load方法是从同一个后台数据表中加载数据的。
如果需要从从其它表加载数据,则需要使用Fill方法。
Fill方法能够根据指定的SQL语句,从指定的数据源中加载数据。

语法:

Fill(SelectString, IsQuery)

Fill(SelectString, ConnectionName,IsQuery)

SelectString:   字符型,用于设置SQL语句。
ConnectionName: 字符型,指定数据源名称,如果不指定,表示使用内部数据源。
IsQuery:        逻辑型,设为True,表示查询表,设为False,表示数据表 。

数据表默认是可以编辑和保存的。
查询表默认不能编辑,通过将其AllowEdit属性设置为True,可以编辑查询结果,但不能保存编辑结果。

示例一

DataTables("表A").Fill("Select * From {订单}", False)

执行上述代码后,表A将显示订单表的数据,尽管其名称还是表A。

如果将IsQuery参数设置为True,将生成查询表:

DataTables("表A").Fill("Select * From {订单}", True)

查询表的数据可以来自多个表,而且可以不包括主键列,但是查询表默认不能编辑,且不能保存编辑结果。

示例二

生成数据表时,也就是IsQuery参数设置为False时,如果只加载部分列,则必须将主键列包括在内,例如:

DataTables("订单").Fill("Select [_Identify], 产品, 客户, 数量, 日期 From {订单}", False)

示例三

如果要从外部数据源加载,务必指定外部数据源的名称。

例如:

DataTables("表A").Fill("Select * From {订单}", "nwind", False)

上述代码将从名为nwind的数据源中加载订单表的数据到表A。

有了Fill方法,我们甚至可以在设计系统的时候,用临时表代替数据表,在启动项目后,根据需要从不同的数据源和表中加载数据。

示例四

Select语句可以动态合成,例如加载今天过生日的员工:

DataTables("表A").Fill("Select * From {员工} Where Month([出生日期]) = " & Date.Today.Month & " And Day([出生日期]) = " & Date.Today.Day, False)


本页地址:http://www.foxtable.com/webhelp/topics/1929.htm