以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  求助 判断是否存在某个表  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=66421)

--  作者:zuyong
--  发布时间: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
--  发布时间:2015/4/6 13:01:00
--  
用DataTables.Contains只能判断外部数据源已加载到DataTable中的数据表
但是用系统菜单生成的表,在外部数据源中生成且立时加载到DataTable中

因此需要这样:

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

--  作者:zuyong
--  发布时间:2015/4/6 13:54:00
--  
回复 ybil
出现了 编译错误

--  作者:zuyong
--  发布时间: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
--  发布时间:2015/4/7 9:19:00
--  
http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=66424