如何等待执行控制从丢弃表返回?

时间:2010-06-23 17:06:22

标签: sql ms-access vba access-vba

我有以下代码:

CurrentDb.Execute "DROP TABLE [" & DatabaseName & "].[" & TableName & "];"

将从MS Access数据库中删除表。通常,这是使用共享网络上的数据库完成的。

在允许控件转到代码中的下一行之前,如何确保DROP方法完成?

这是在VBA MS Access 2003中完成的;但如果版本影响答案,我会感兴趣。

2 个答案:

答案 0 :(得分:2)

以下是我对Loop方法的看法:

Public Function DeleteTable(DatabaseName as String, TableName as String) as Boolean
     DeleteTable = False

        CurrentDb.Execute "DROP TABLE [" & DatabaseName & "].[" & TableName & "];"
        Do
        Loop Until TableExists(TableName, DatabaseName) = False     

     DeleteTable = True
End Function

Public Function TableExists(TableName As String, DatabaseName As String) As Boolean   

        If 0 = CurrentDb.OpenRecordset("SELECT COUNT(*) As Count FROM [" &   DatabaseName & "].[MSysObjects] WHERE [Name] = '" & TableName & "';").Fields("Count").Value Then
             TableExists = False
        Else
             TableExists = True
        End If
End Function

答案 1 :(得分:0)

您可以在里面编写一个包含CurrentDb.Execute命令的循环。 在循环内部,您可以在变量中存储名为TableName的表的数量。 在此数字= 1之前,您无法退出循环。 当数字变为最后为零时,您可以退出循环并继续执行。