博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
VB 6.0中判断是否Access 2010中存在指定表格
阅读量:7059 次
发布时间:2019-06-28

本文共 1135 字,大约阅读时间需要 3 分钟。

问题

最近在工作中遇到使用VB6判断是否ACCESS 2010数据库中是否存在指定表格的问题。对于早期ACCESS数据库(应当主要是ACCESS 2003及以前版本),使用DAO引擎操作是没有问题的。主要相关代码如下:

For Each mytable In mydatabase.TableDefs
    print mytable.name
Next
但是,DAO技术已经不适用于ACCESS 2010了。为此,我使用BAIDU搜索,初步得到的一个方法如下:
cn2.Open "Provider=MSDASQL.1;Persist Security Info=False;Data Source=MS Access Database;Initial Catalog=" + App.Path + "\data\object.accdb"
            
            Debug.Print cn2.ConnectionString
            
            '1, 先判断表格是否存在
           cn2.Execute "select * from Single"
            If Err.Number <> 0 Then
'
                MsgBox "目标数据库中表格Single不存在!"
                GoTo end1
            End If
注意,我使用VB6访问ACCESS2010时使用的不是Microsoft.Jet.OLEDB.4.0技术,我发现使用它访问高版本的 ACCESS(INCLUDING 2007)是不行的,这个你相信就是了,是没有问题的。我们看到,上面代码使用了陷阱技术来分析数据库中是否存在指定表格。但可怜的是,上述技术对于 ACCESS 2010是没有用的(我亲自试验的)。

解答

正确的方法(之一)是,使用ADO对象的OpenSchema方法。相关代码如下:

            cn2.Open "Provider=MSDASQL.1;Persist Security Info=False;Data Source=MS Access Database;Initial Catalog=" + App.Path + "\data\object.accdb"
Dim bYes As Boolean
            bYes = False
            
            Set rs2 = cn2.OpenSchema(adSchemaTables)
            
            Do Until rs2.EOF
            
            Debug.Print rs2!TABLE_NAME
            
                If rs2!TABLE_NAME = "Single" Then
                    bYes = True
                    GoTo cont1
                End If
                
                rs2.MoveNext
                
            Loop
        
cont1:
            rs2.Close
                   
            If Not bYes Then
                GoTo end1
            End If

转载地址:http://sjrol.baihongyu.com/

你可能感兴趣的文章
TryEnterCriticalSection
查看>>
用 Java 实现断点续传参考 (HTTP)
查看>>
VB6.0 取 毫秒级 时间戳
查看>>
unity KeyCode各键值说明
查看>>
Delphi中编写无输出函数名的DLL文件
查看>>
centos的基本命令04
查看>>
Codeforces Round #313 (Div. 2) D. Equivalent Strings(字符串+递归)
查看>>
20个案例掌握PL/SQL 基础
查看>>
windows下查看端口占用以及进程名称
查看>>
CH 5101 最长公共上升子序列
查看>>
水平分库分表的关键问题及解决思路
查看>>
Spring Boot 探索系列 - 自动化配置篇
查看>>
Jar包转成Dll的方式(带嵌套的jar也能做) (转)
查看>>
Linux-centos-7.2-64bit 安装配置mysql
查看>>
[javaEE] 控制浏览器缓存资源
查看>>
MyBatis传入参数为集合 list 数组 map写法
查看>>
Git常用命令速记与入门
查看>>
iOS开发--Swift RAC响应式编程初探
查看>>
beetl模板的${!}用法
查看>>
UDP协议发包的使用(DatagramSocket、DatagramPacket)
查看>>