网络服务提供者,seo营销全景图,电商网站开发计划,wordpress 如何设置首页《VBA数据库解决方案》教程#xff08;版权10090845#xff09;是我推出的第二套教程#xff0c;目前已经是第二版修订了。这套教程定位于中级#xff0c;是学完字典后的另一个专题讲解。数据库是数据处理的利器#xff0c;教程中详细介绍了利用ADO连接ACCDB和EXCEL的方法… 《VBA数据库解决方案》教程版权10090845是我推出的第二套教程目前已经是第二版修订了。这套教程定位于中级是学完字典后的另一个专题讲解。数据库是数据处理的利器教程中详细介绍了利用ADO连接ACCDB和EXCEL的方法和实例操作教程第一版的修订内容主要是完成所有程序文件的32位和64位OFFICE系统测试。
这套教程共两册八十四讲今后一段时间会给大家陆续推出修订后的教程内容。今日的内容是VBA数据库解决方案第十二讲如何判断数据库中某个数据表是否存在
【分享成果随喜正能量】 心静者高高者俯瞰世界 心和者仁仁者包容万物 心慈者深深者淡对冷暖 心慧者安安者笑对人生 。
第十二讲 如何判断数据库中某个数据表是否存在
大家好今天给继续讲解VBA数据库解决方案今天讲第12讲如何判断数据库中的表是否存在。
1 应用场景的具体分析
为什么要讲这讲的内容呢如我在上一讲讲的内容中有这段代码Set catADO CreateObject(ADOX.Catalog) strPath ThisWorkbook.Path \mydata2.accdb 此处是一个完整的路径 strTable 员工记录 表名称 If Dir(strPath) Then Kill strPath 如果有一个名称相同的表那么删除 catADO.Create ProviderMicrosoft.ACE.OLEDB.12.0;Data Source strPath 创建数据库并连接。
当我要创建一个数据库的时候要首先判断一下这个数据库是否是存在如果没有存在才能创建如果已经存在那么先要删除这个数据库才能创建不然会出错的。对于关系表也是如此如果我们要新建一个表那么判断这个表是否存在是必须的。如何做到呢
2 判断数据表是否存在的代码及代码解读
我们看下面的代码
Sub myna_12() 判断数据表是否存在 Dim cnADO As Object Dim strPath As String Set cnADO CreateObject(ADODB.Connection) strPath ThisWorkbook.Path \mydata2.accdb cnADO.Open ProviderMicrosoft.ACE.OLEDB.12.0;Data Source strPath If cnADO.OpenSchema(20, Array(Empty, Empty, 员工记录, Empty)).EOF Then MsgBox [员工记录] 表 不存在 Else MsgBox [员工记录] 表 已存在 End If
End Sub
代码截图 代码解读
1 Set cnADO CreateObject(ADODB.Connection) strPath ThisWorkbook.Path \mydata2.accdb cnADO.Open ProviderMicrosoft.ACE.OLEDB.12.0;Data Source strPath 上面的语句是建立ADO对象及打开连接就不再过多的讲解了
2 If cnADO.OpenSchema(20, Array(Empty, Empty, 员工记录, Empty)).EOF Then
上面的语句中用到了cnADO.OpenSchema方法:
OpenSchema方法是从提供者获取数据库模式信息返回包含模式信息的 Recordset 对象。
语法
OpenSchema (QueryType, Criteria, SchemaID)
参数
QueryType 所要运行的模式查询类型可以选择的常量由于值较多我们只是给出文中所用到的值 adSchemaTables 20 表示请求有关表的信息Criteria 可选。每个QueryType 选项的查询限制条件数组比如 QueryType是adSchemaTablesCriteria可用的就是TABLE_CATALOG表的目录TABLE_SCHEMA表的模型TABLE_NAME表的名字TABLE_TYPE(表的类型)由于在我们的代码中我们要求的是表明是“员工记录”所以我们给出的数组是Array(Empty, Empty, 员工记录, Empty)) 第三个参数SchemaID极少用到。如果 QueryType 设置为 adSchemaProviderSpecific -1请求提供者特定的信息则需要该参数否则不使用它.
EOF它是end of fileEnd of File就是文件的结束,也即EOF,通常用来判断文件的操作是否结束的标志 的缩写表示文字流stream的结尾。
这样代码If cnADO.OpenSchema(20, Array(Empty, Empty, 员工记录, Empty)).EOF then 代表的意思如果到了文件的操作结束意思是说也没有找到表名称为“员工记录”的表那么就是没有找到。 好了我们运行一下上面的代码 今日内容回向
1. 如何判断一个数据表是否存在
2 对OpenSchema的语法是否了解呢
本讲内容参考程序文件VBA与数据库操作第一册.xlsm 我20多年的VBA实践经验全部浓缩在下面的各个教程中