Foxtable(狐表)用户栏目专家坐堂 → 求助:项目关闭前删除不需要的表,总出错!


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

主题:求助:项目关闭前删除不需要的表,总出错!

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


加好友 发短信
等级:一尾狐 帖子:455 积分:3756 威望:0 精华:0 注册:2012/2/8 14:19:00
求助:项目关闭前删除不需要的表,总出错!  发帖心情 Post By:2016/1/9 12:57:00 [只看该作者]

BeforeCloseProject    关闭项目之前执行 事件代码:

‘想要实现的目的:关闭项目前,如果不是表A,表B,表C,表D,则全部删除!!

代码如下:


If DataTables.Count > 4 Then
    Dim Builder As New ADOXBuilder
    Builder.Open()
    With Builder
        Dim tbs As String = "表A,表B,表C,表D"
        For Each t As Table In Tables
            Dim name = t.Name
            If tbs.Contains(name) = False Then
                .DeleteTable(name)
            End If
        Next
    End With
    Builder.Close()
End If

但会经常性地出现以下错误信息!!

图片点击可在新窗口打开查看此主题相关图片如下:222.jpg
图片点击可在新窗口打开查看


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


加好友 发短信
等级:一尾狐 帖子:455 积分:3756 威望:0 精华:0 注册:2012/2/8 14:19:00
  发帖心情 Post By:2016/1/9 13:09:00 [只看该作者]

请老师帮个忙!

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


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By:2016/1/9 14:16:00 [只看该作者]

其它表是通过什么方式生成的?

如果是动态生成的临时表,不用删除,关闭项目就自动没有了

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


加好友 发短信
等级:一尾狐 帖子:455 积分:3756 威望:0 精华:0 注册:2012/2/8 14:19:00
  发帖心情 Post By:2016/1/9 15:10:00 [只看该作者]

不是临时生成的表!而是程序运行过程中随机添加的正常表。

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


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By:2016/1/9 15:15:00 [只看该作者]

通过什么方式生成的?代码说明一下!

 程序运行过程中随机添加的一般都是临时表

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


加好友 发短信
等级:一尾狐 帖子:455 积分:3756 威望:0 精华:0 注册:2012/2/8 14:19:00
  发帖心情 Post By:2016/1/9 15:58:00 [只看该作者]

是从Accesc文件中加导入进来的。主要是对历史数据的查询或核对,项目关闭后这些表就不再需要了。
[此贴子已经被作者于2016/1/9 15:59:25编辑过]

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


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By:2016/1/9 16:39:00 [只看该作者]

改成Datatable,Tables包含了关联表
 For Each t As DataTable In DataTables
       Dim name = t.Name
       If tbs.Contains(name) = False Then
              .DeleteTable(name)
       End If 
  Next

有外部表,加上 t.Type判断一下
 If tbs.Contains(name) = False AndAlso t.Type = 1 Then

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


加好友 发短信
等级:一尾狐 帖子:455 积分:3756 威望:0 精华:0 注册:2012/2/8 14:19:00
  发帖心情 Post By:2016/1/9 19:21:00 [只看该作者]

错误依旧呢!图片点击可在新窗口打开查看

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


加好友 发短信
等级:一尾狐 帖子:455 积分:3756 威望:0 精华:0 注册:2012/2/8 14:19:00
  发帖心情 Post By:2016/1/9 19:30:00 [只看该作者]

将查询历史记录的表名用全局变量引用表名,然后在项目关闭前事件中直接删除查询的表名即解决了这个问题。谢谢你热心的解答和指导。

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/1/10 12:13:00 [只看该作者]

Dim dts As new List(Of String)
Dim tbs As String = "表A,表B"
For Each dt As DataTable In DataTables
    If tbs.Contains(dt.name) = False Then
        dts.add(dt.name)
    End If
Next
Dim Builder As New ADOXBuilder
Builder.Open()
With Builder
    For Each n As String In dts
        .DeleteTable(n)
    Next
End With
Builder.Close()

 回到顶部