加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

VB 6.0中判断是否Access 2010中存在指定表格

发布时间:2020-12-17 00:16:01 所属栏目:大数据 来源:网络整理
导读:问题 最近在工作中遇到使用VB6判断是否ACCESS 2010数据库中是否存在指定表格的问题。对于早期ACCESS数据库(应当主要是ACCESS 2003及以前版本),使用DAO引擎操作是没有问题的。主要相关代码如下: ForEachmytableInmydatabase.TableDefsprintmytable.nameNe

问题

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

ForEachmytableInmydatabase.TableDefs
printmytable.name
Next

但是,DAO技术已经不适用于ACCESS 2010了。为此,我使用BAIDU搜索,初步得到的一个方法如下:

cn2.Open"Provider=MSDASQL.1;PersistSecurityInfo=False;DataSource=MSAccessDatabase;InitialCatalog="+App.Path+"dataobject.accdb"

Debug.Printcn2.ConnectionString

'1,先判断表格是否存在
cn2.Execute"select*fromSingle"
IfErr.Number<>0Then
'
MsgBox"目标数据库中表格Single不存在!"
GoToend1
EndIf

注意,我使用VB6访问ACCESS2010时使用的不是Microsoft.Jet.OLEDB.4.0技术,我发现使用它访问高版本的ACCESS(INCLUDING 2007)是不行的,这个你相信就是了,是没有问题的。我们看到,上面代码使用了陷阱技术来分析数据库中是否存在指定表格。但可怜的是,上述技术对于ACCESS 2010是没有用的(我亲自试验的)。

解答

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

cn2.Open"Provider=MSDASQL.1;PersistSecurityInfo=False;DataSource=MSAccessDatabase;InitialCatalog="+App.Path+"dataobject.accdb"
DimbYesAsBoolean
bYes=False

Setrs2=cn2.OpenSchema(adSchemaTables)

DoUntilrs2.EOF

Debug.Printrs2!TABLE_NAME

Ifrs2!TABLE_NAME="Single"Then
bYes=True
GoTocont1
EndIf

rs2.MoveNext

Loop

cont1:
rs2.Close

IfNotbYesThen
GoToend1
EndIf

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读