加载其它表的数据
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)