以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  如何遍历acc数据库,获取所有的表名,然后全部临时加载到项目中呢?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=175059)

--  作者:cnsjroom
--  发布时间:2022/2/18 9:03:00
--  如何遍历acc数据库,获取所有的表名,然后全部临时加载到项目中呢?

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

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

 

 

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


--  作者:有点蓝
--  发布时间:2022/2/18 9:05:00
--  
http://www.foxtable.com/webhelp/topics/1943.htm
--  作者:cnsjroom
--  发布时间:2022/2/18 9:54:00
--  回复:(有点蓝)http://www.foxtable.com/webhelp/to...

谢谢老师  参照老师的指导 

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

 

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
错误所在事件:自定义函数,临时表加载
详细错误信息:
调用的目标发生了异常。
集合已修改;可能无法执行枚举操作。

 

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


--  作者:有点蓝
--  发布时间: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加载表即可