Foxtable(狐表)用户栏目专家坐堂 → 按照程版的“自动更新表结构”的代码,怎么在我这只能增加的是内部表?


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

主题:按照程版的“自动更新表结构”的代码,怎么在我这只能增加的是内部表?

帅哥,在线噢!
有点蓝
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111393 积分:567029 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/3/4 11:04:00 [显示全部帖子]


 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111393 积分:567029 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/3/4 11:16:00 [显示全部帖子]

这段代码只是根据外部数据库的结构创建内部表,并不是创建外部表。

使用外部数据源

前面的代码都是针对内部数据源的,如果要为外部数据源动态创建表和列,只需在定义ADOXBuilder的时候,指定数据源名称即可:

Dim Builder As New ADOXBuilder("数据源名称")

例如在名为nwnd的外部数据源中创建一个订单表:

Dim Builder As New ADOXBuilder("nwnd"'要指定数据源名称
Dim
 tbl As ADOXTable
Builder.Open() 
tbl = Builder.NewTable(
"订单"'创建表
With
 tbl
    .AddColumn(
"日期" ,ADOXType.DateTime)
    .AddColumn(
"产品" ,ADOXType.String12)
    .AddColumn(
"客户" ,ADOXType.String20)
    .AddColumn(
"数量" ,ADOXType.Integer)
    .AddColumn(
"备注" ,ADOXType.Text)
End With
Builder.AddTable(tbl) 
'增加表
Builder.Close()


 回到顶部
帅哥,在线噢!
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111393 积分:567029 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/3/4 13:48:00 [显示全部帖子]

给出完整可测试的代码看看

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111393 积分:567029 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/3/4 15:18:00 [显示全部帖子]

addtable.txt这个文件发上来看看

 回到顶部
帅哥,在线噢!
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111393 积分:567029 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2020/3/4 18:11:00 [显示全部帖子]

还是有问题的,如果外部表管理中没有添加的表,使用DataTables.Load(Value1s(0))是无法加载进来的,所以下面代码会出错

if  DataTables(Value1s(0)).DataCols.Contains(tn) = False 

因此,如果是外部表,应该使用SQLcommand获取表结构进行判断是否存在列。同时这种方式添加的表是无法DataTables(xxx)这样直接使用的,只能是使用SQLcommand,或者是Fill,或者是绑定到sqltable使用

 回到顶部