Foxtable(狐表)用户栏目专家坐堂 → 如何将外部数据源中的所有表一次全加入到狐表中


  共有9795人关注过本帖树形打印复制链接

主题:如何将外部数据源中的所有表一次全加入到狐表中

帅哥哟,离线,有人找我吗?
Fotable
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1015 积分:6979 威望:0 精华:0 注册:2012/8/1 18:41:00
如何将外部数据源中的所有表一次全加入到狐表中  发帖心情 Post By:2012/9/21 22:52:00 [只看该作者]

如题

 回到顶部
帅哥哟,离线,有人找我吗?
Fotable
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1015 积分:6979 威望:0 精华:0 注册:2012/8/1 18:41:00
  发帖心情 Post By:2012/9/21 23:25:00 [只看该作者]

我想了一个这样的办法

方法一:利用 outtalebuilder

Dim lst As List(Of String)
lst = Connections(connection1).GetTableNames

Dim q As new OuterTableBuilder
q.ConnectionName = connection1

For Each nm As String In lst
    q.TableName = nm
    q.SelectString = "Select * From {" & nm &"}"
    q.Build
Next
但这种办法由好像能加入,但是生成加入的表是临时表,关闭系统就没有了。

 

[此贴子已经被作者于2012-9-21 23:33:37编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
Fotable
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1015 积分:6979 威望:0 精华:0 注册:2012/8/1 18:41:00
  发帖心情 Post By:2012/9/21 23:36:00 [只看该作者]

然后我有想了第二个方法 利用adoxbuilder

 

Dim Builder As New ADOXBuilder(connection1)
Dim
tbl As ADOXTable

 

 

Dim lst As List(Of String)
lst = Connections(connection1).GetTableNames

For Each nm As String In lst


Builder.Open()
tbl = Builder.Tables(nm
) '创建表
Builder.AddTable(tbl) '增加表
Builder.Close()

next

 

这个方法报错

[此贴子已经被作者于2012-9-21 23:38:13编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
Fotable
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1015 积分:6979 威望:0 精华:0 注册:2012/8/1 18:41:00
  发帖心情 Post By:2012/9/21 23:53:00 [只看该作者]

思考一下为什么报错呢?是不是外部数据库中的表没有identify列。

我就先用代码给外部数据库中的表增加identify列。

Dim Builder As New ADOXBuilder(connection1)
Builder.Open() '打开ADOXBuilder
Builder.Tables("表1").AddColumn("_Identify" ,ADOXType.Integer) '增加自动增量型列
Builder.Close() '关闭ADOXBuilder

 

但这个方法也报错,提示保留名称不能作为列名称使用


 回到顶部
帅哥哟,离线,有人找我吗?
blackzhu
  5楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:狐仙 帖子:9879 积分:57634 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2012/9/22 8:14:00 [只看该作者]

2楼的做法虽说是临时表,但是可编辑保存的.

貌似全部加载可以这样吧

for each dt as datatable in datatables
    dt.load
next

 回到顶部
帅哥哟,离线,有人找我吗?
lin_hailun
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/9/22 9:22:00 [只看该作者]

以下是引用Fotable在2012-9-21 23:36:00的发言:

然后我有想了第二个方法 利用adoxbuilder

 

Dim Builder As New ADOXBuilder(connection1)
Dim
tbl As ADOXTable

 

 

Dim lst As List(Of String)
lst = Connections(connection1).GetTableNames

For Each nm As String In lst


Builder.Open()
tbl = Builder.Tables(nm
) '创建表
Builder.AddTable(tbl) '增加表
Builder.Close()

next

 

这个方法报错

[此贴子已经被作者于2012-9-21 23:38:13编辑过]

Dim Builder As New ADOXBuilder(connection1)   去掉数据源

tbl = Builder.Tables(nm)   创建表是 Builder.NewTable(nm)

但这样是复制表,与外部数据源就无关了。

建议还是使用2楼的方法,每次项目启动的时候添加进来。(狐表可能也是这样干的)



 回到顶部
帅哥哟,离线,有人找我吗?
Fotable
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1015 积分:6979 威望:0 精华:0 注册:2012/8/1 18:41:00
  发帖心情 Post By:2012/9/22 10:37:00 [只看该作者]

以下是引用blackzhu在2012-9-22 8:14:00的发言:
2楼的做法虽说是临时表,但是可编辑保存的.

貌似全部加载可以这样吧

for each dt as datatable in datatables
    dt.load
next
datatable.load  方法 其实针对的是数据的加载。本身都已经成为datatable了 说明这个表已经被加入到狐表中了,只是没有加载数据。

 回到顶部
帅哥哟,离线,有人找我吗?
Fotable
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1015 积分:6979 威望:0 精华:0 注册:2012/8/1 18:41:00
  发帖心情 Post By:2012/9/22 10:42:00 [只看该作者]

以下是引用blackzhu在2012-9-22 8:14:00的发言:
2楼的做法虽说是临时表,但是可编辑保存的.

貌似全部加载可以这样吧

for each dt as datatable in datatables
    dt.load
next

还有 虽说这种方法可以编辑保存,但保存的只是数据,对于表格的事件函数,表格的属性设置,确没有办法保存。这个意义是差别很大的


 回到顶部
帅哥哟,离线,有人找我吗?
Fotable
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1015 积分:6979 威望:0 精华:0 注册:2012/8/1 18:41:00
  发帖心情 Post By:2012/9/22 10:46:00 [只看该作者]

以下是引用lin_hailun在2012-9-22 9:22:00的发言:

Dim Builder As New ADOXBuilder(connection1)   去掉数据源

tbl = Builder.Tables(nm)   创建表是 Builder.NewTable(nm)

但这样是复制表,与外部数据源就无关了。


用builder.newtable的方法这样建立,只是复制一个表名,表的列如何复制呢?


 回到顶部