以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]如何从外部表中加载部分字段  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=12402)

--  作者:roshan
--  发布时间:2011/9/1 16:03:00
--  [求助]如何从外部表中加载部分字段

在项目开发过程中,想实现:根据用户权限从外部数据库的指定数据表中加载部分字段,不知有什么好的思路?

1、曾用datatable的load方法,但是该方法只能动态加载不同的记录,但加载的是全部字段,不能控制部分字段的加载。

2、用datatable的fill方法, 该方法能够实现部分字段的加载和不同记录的加载,但是这种方法会改变datatable的字段结构,会造成表事件的出错。

请问高手是否在load方法中可以内置类似于fill的select 语句?


--  作者:hhbb
--  发布时间:2011/9/1 16:11:00
--  

Fill

对于SQLTable和SQLQuery类型的Table,以及副本型的Table,可以通过Fill方法动态加载数据。

语法:

Fill(SelectString, IsQuery)

或者

Fill(SelectString, ConnectionName, IsQuery)

SelectString:     Select语句
ConnectionName:   可选参数,指定数据源名称
IsQuery:          逻辑型,设为True,将生成SQLQuery型Table,否则生成SQLTable型Table.

示例

Tables("窗口1_Table1").Fill("Select * From {客户}","nwnd",True)

不管Table原来显示的是什么数据,执行上述代码后,Table将显示nwnd数据源中的客户表数据。

需要特别注意的是,如果只想取部分列生成SQLTable,那么必须包括主键列在内,例如:

Tables("窗口1_Table1").Fill("Select [_Identify],[客户],[数量],[单价] From {订单}",False)

这里假定订单表是内部数据表,内部数据表的主键列是_Identify,如果是外部表,请使用实际的主键列名称。

如果要生成SQLQuery,则没有这个限制:

Tables("窗口1_Table1").Fill("Select [_Identify],[客户],[数量],[单价] From {订单}",True)


--  作者:狐狸爸爸
--  发布时间:2011/9/1 16:33:00
--  

只能用Fill。

另外定义外部表的时候,也可以指定字段的。