如何检查表是否存在于Access数据库中?

问题描述 投票:4回答:2

如何检查表是否存在?

使用VB 6.0和ACCESS 2003

我的代码。

Cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & App.Path & "\iTDC-ACS.MDB"
Cn.Open

cmdCardEvent.ActiveConnection = Cn
cmd.ActiveConnection = Cn

cmdcardevent1.ActiveConnection = Cn
cmd.ActiveConnection = Cn

cmd.CommandText = "DROP TABLE tmp_cardevent"
cmd.Execute

cmd.CommandText = "drop table tmp_MOI"
cmd.Execute

这里我要检查表是否存在,然后删除表,否则不需要。

如何检查表是否存在?

需要VB 6代码帮助吗?

ms-access vb6
2个回答
2
投票

将此功能下面的功能放入公共模块。

调用该函数的示例代码:

Dim result as boolean
result = IsExistingTable("c:\myFolder\myDatabase.mdb","myTableName")
If result Then
   'Do something
Else
   'Do something else.
Endif

功能

Public Function IsExistingTable( _
  ByVal Database As String, _
  ByVal TableName As String _
) As Boolean

Dim ConnectString As String
Dim ADOXConnection As Object
Dim ADODBConnection As Object
Dim Table As Variant

ConnectString = "Provider=Microsoft.Jet.OLEDB.4.0;data source=" & Database
Set ADOXConnection = CreateObject("ADOX.Catalog")
Set ADODBConnection = CreateObject("ADODB.Connection")
ADODBConnection.Open ConnectString
ADOXConnection.ActiveConnection = ADODBConnection
For Each Table In ADOXConnection.Tables
  If LCase(Table.Name) = LCase(TableName) Then
     IsExistingTable = True
     Exit For
  End If
Next
ADODBConnection.Close

End Function

0
投票

使用On Error Resume Next,如下例所示。如果数据库中存在表(临时表),则会删除该表(否则),否则它将留下错误并转到下一条指令,而不会给出任何错误。

On Error Resume Next
cmd.ActiveConnection = cn
cmd.CommandText = "drop table temp"
cmd.Execute , , adCmdText
© www.soinside.com 2019 - 2024. All rights reserved.