Foxtable(狐表)用户栏目专家坐堂 → 求助 判断是否存在某个表


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

主题:求助 判断是否存在某个表

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


加好友 发短信
等级:婴狐 帖子:49 积分:462 威望:0 精华:0 注册:2015/1/1 9:38:00
求助 判断是否存在某个表  发帖心情 Post By:2015/4/6 12:24:00 [只看该作者]

用下面的代码在外部源access生成了一个新表

Dim Builder As New ADOXBuilder("我的外部源")    '指定数据源名称
            Dim tbl As ADOXTable
            Builder.Open()
            tbl = Builder.NewTable("htg695") '创建表  表名前加上
            With tbl
                .AddColumn("产品" ,ADOXType.String, 12)
                .AddColumn("客户" ,ADOXType.String, 20)
                .AddColumn("数量" ,ADOXType.Integer)
                .AddColumn("备注" ,ADOXType.Text)
            End With
            Builder.AddTable(tbl,True, True) '增加表
            Builder.Close()

再用下面的代码判断是否存在这个表,结果是未找到

If DataTables.Contains("htg695") '如果存在统计表
MessageBox.Show("htg695表已经存在")
End If

但是用系统菜单生成的表,用上面这段代码却能找到,实在搞不懂了,老师指点一下吧

如果直接用代码删除这个表htg695,则提示  :不存在名称为"htg695"的DataTable



[此贴子已经被作者于2015/4/6 12:33:21编辑过]

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


加好友 发短信
等级:超级版主 帖子:521 积分:4910 威望:0 精华:7 注册:2008/9/2 22:22:00
  发帖心情 Post By:2015/4/6 13:01:00 [只看该作者]

用DataTables.Contains只能判断外部数据源已加载到DataTable中的数据表
但是用系统菜单生成的表,在外部数据源中生成且立时加载到DataTable中

因此需要这样:

if Connections("我的外部源").GetTableNames.Containts("htg695") Then
      MessageBox.Show("htg695表已经存在")
End If

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


加好友 发短信
等级:婴狐 帖子:49 积分:462 威望:0 精华:0 注册:2015/1/1 9:38:00
  发帖心情 Post By:2015/4/6 13:54:00 [只看该作者]

回复 ybil
出现了 编译错误

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


加好友 发短信
等级:婴狐 帖子:49 积分:462 威望:0 精华:0 注册:2015/1/1 9:38:00
  发帖心情 Post By:2015/4/6 14:03:00 [只看该作者]

动态加载了一个外部源中的表后,用DataTables.Contains  还是找不到该表,下面的代码错在哪里?

 If DataTables.Contains("ht" & dr("合同编号")) = False Then  '如果已加载的表中不存在项目表
        Dim lst2 As List(Of String) '定义一个字符型集合
        lst2 = Connections("我的外部源").GetTableNames        '将远程数据库的所有表名称返回到字符串集合
        If lst2.Contains("ht" & dr("合同编号"))= True  Then      '如果后台数据库存在该表
            DataTables.Load("ht" & dr("合同编号"))                   '动态加载该表    这条代码能动态加载吗?为什么还是用DataTables.Contains找不到
        End If
    End If

如果想直接删除外部源中的一个表,用什么代码?
   Dim Builder As New ADOXBuilder
   Builder.Open()
   Builder.DeleteTable("ht" & dr("合同编号"))   '这个行吗? 
[此贴子已经被作者于2015/4/6 14:05:27编辑过]

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


加好友 发短信
等级:贵宾 帖子:35433 积分:178524 威望:0 精华:3 注册:2013/3/30 16:36:00
  发帖心情 Post By:2015/4/7 9:19:00 [只看该作者]


 回到顶部