2009-07-05 101 views
3

如何检查表是否存在?如何检查访问数据库中是否存在表?

使用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代码帮助?

回答

1

将此函数下面的函数放入公共模块中。

实施例的代码调用函数:

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

显示参数不选项错误“IsExistingTable” – Gopal 2009-07-05 05:58:39

3
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 

注意:只做DROP TABLE而不先检查会更便宜。

+0

刚接触vb?我如何使用此功能从我的发布代码 – Gopal 2009-07-05 05:43:18

0

使用On Error Resume Next例子如下面给出。如果数据库中存在一个表(temp),那么它将会丢失,否则它将离开错误并转到下一条指令,而不会给出任何错误。

On Error Resume Next 
cmd.ActiveConnection = cn 
cmd.CommandText = "drop table temp" 
cmd.Execute , , adCmdText 
相关问题