Foxtable(狐表)用户栏目专家坐堂 → 如何遍历acc数据库,获取所有的表名,然后全部临时加载到项目中呢?


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

主题:如何遍历acc数据库,获取所有的表名,然后全部临时加载到项目中呢?

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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
如何遍历acc数据库,获取所有的表名,然后全部临时加载到项目中呢?  发帖心情 Post By:2022/2/18 9:03:00 [只看该作者]

如何遍历acc数据库,获取所有的表名,然后全部临时加载到项目中呢?

当前代码如下:只能加载一个表,红色部分就是表名

 

 

Dim q As new QueryBuilder
q.Conn ectionN ame = "委"
q.TableName = "在职及亲属"   是导入到项目后的表名
q.Se lectString = "S elect * From {在职及亲属}"  是ACC数据库中实际存在的表名
q.Build
MainTable = Tables("表A")


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


加好友 发短信
等级:超级版主 帖子:110758 积分:563716 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/2/18 9:05:00 [只看该作者]


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


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)http://www.foxtable.com/webhelp/to...  发帖心情 Post By:2022/2/18 9:54:00 [只看该作者]

谢谢老师  参照老师的指导 

当前代码如下:【想实现先遍历外部数据源的所有表名,然后判断项目里面是否存在,如不存在就加载进来,存在就不做任何动作】

 

Dim q As new Qu eryBuilder
q.Conn ectionN ame = "委"
Dim lst As List(Of  String)
lst = Conn ections("委").GetTableNames
For Each nm As String In lst
    For Each t As DataTable In DataTables  
        If t.Name=nm Then
        Else
            q.TableName = nm
            q.Sele ctString = "S elect * From {" & nm & "}"
            q.Build
        End If
    Next
Next
MainTable = Tables("表A")

 

代码运行后提示如下:

.NET Framework 版本:4.0.30319.42000
Foxtable 版本:2020.5.29.8
错误所在事件:自定义函数,临时表加载
详细错误信息:
调用的目标发生了异常。
集合已修改;可能无法执行枚举操作。

 

老师有没有修正的方法呢?


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


加好友 发短信
等级:超级版主 帖子:110758 积分:563716 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/2/18 10:12:00 [只看该作者]

建议还是用到的时候在加载。没有必要一次性全部加载

Dim q As new Qu eryBuilder

q.Conn ectionN ame = "委"
Dim lst As List(Of  String)
lst = Conn ections("委").GetTableNames
    For Each t As DataTable In DataTables  
        If lst.contains(t.Name)Then
lst.remove(nm) 先移除所有已经存在的表名,剩下的lst就是全部没有加载的
        End If
    Next
然后这里接着遍历lst加载表即可

 回到顶部