vba判断数组是否为空_VBA数据库解决⽅案第12讲:如何判断数据库中某个数据表是否存在...
肖申克的救赎经典台词
⼤家好,今天给继续讲解VBA与数据库解决⽅案,今天讲第12讲:如何判断数据库中的表是否存在。为什么要讲这讲的内容呢?如我在上⼀讲讲的内容中有这段代码:
home
Set catADO = CreateObject("ADOX.Catalog")
strPath = ThisWorkbook.Path & "mydata2.accdb" '此处是⼀个完整的路径
strTable = "员⼯记录" '表名称
If Dir(strPath) <> "" Then Kill strPath '如果有⼀个名称相同的表,那么删除
catADO.Create "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strPath '创建数据库并连接。
当我要创建⼀个数据库的时候,要⾸先判断⼀下这个数据库是否是存在,如果没有存在才能创建,如果已经存在,那么先要删除这个数据库才能创建,不然会出错的。对于关系表也是如此,如果我们要新建⼀个表,那么判断这个表是否存在是必须的。如何做到呢?我们看下⾯的代码:
Sub mynaTables() '判断数据表是否存在
Dim cnADO As Object
Dim strPath As String
Set cnADO = CreateObject("ADODB.Connection")
strPath = ThisWorkbook.Path & "mydata2.accdb"
cnADO.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strPath
If cnADO.OpenSchema(20, Array(Empty, Empty, "员⼯记录", Empty)).EOF Then
MsgBox "[员⼯记录] 表" & "不存在"
El
MsgBox "[员⼯记录] 表" & "已存在"
End If
End Sub
brpc
代码截图:male是什么意思
代码讲解:
①Set cnADO = CreateObject("ADODB.Connection")
strPath = ThisWorkbook.Path & "mydata2.accdb"
cnADO.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & strPath
上⾯的语句是建⽴ADO对象,及打开连接,就不再过多的讲解了
②If cnADO.OpenSchema(20, Array(Empty, Empty, "员⼯记录", Empty)).EOF Thenahead是什么意思>lewis
上⾯的语句中⽤到了cnADO.OpenSchema()
OpenSchema ⽅法意思是从提供者获取数据库模式信息,返回包含模式信息的 Recordt 对象。
语法:OpenSchema (QueryType, Criteria, SchemaID)
参数,QueryType 所要运⾏的模式查询类型,可以选择的常量,由于值较多,我们只是给出⽂中所⽤到的值 adSchemaTables = 20 表⽰请求有关表的信息
over underCriteria 可选。每个QueryType 选项的查询限制条件数组,⽐如 QueryType是adSchemaTables也就是20的话,Criteria可⽤的就是TABLE_CATALOG(表的⽬录),TABLE_SCHEMA(表的模型),TABLE_NAME(表的名字),TABLE_TYPE(表的类型),由于在我们的代码中我们要求的是表明是“员⼯记录”,所以我们给出的数组是:Array(Empty, Empty, "员⼯记录", Empty))
第三个参数SchemaID极少⽤到。如果 QueryType 设置为 adSchemaProviderSpecific = -1请求提供者特定的信息,则需要该参数,否则不使⽤它.
EOF它是end of file(End of File就是⽂件的结束,也即EOF,通常⽤来判断⽂件的操作是否结束的标志 )的缩写,表⽰"⽂字流"(stream)的结尾。
这样,代码If cnADO.OpenSchema(20, Array(Empty, Empty, "员⼯记录", Empty)).EOF then 代表的意思:如果到了⽂件的操作结束,意思是说也没有找到表名称为“员⼯记录”的表,那么就是没有找到。
好了,我们运⾏⼀下上⾯的代码:
alarmed今⽇内容回向:
bless1. 如何判断⼀个数据表是否存在?
2 对OpenSchema的语法,是否了解呢?gpa成绩是什么意思
《VBA代码解决⽅案》系列电⼦书,是我将⼀些⾮常实⽤的VBA内容结集成册,PDF格式⽂件,朋友们可以从中查找到你想要解决问题的思路和⽅法,可以复制⽂中的VBA代码直接使⽤。有需要的朋友微信联络我NZ9668。